POJ-1129 Channel Allocation

Posted gdskl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ-1129 Channel Allocation相关的知识,希望对你有一定的参考价值。

题意:给定无向图,对点着色,使得相邻的结点颜色不同。

思路:直接dfs爆搜即可

Sample Input

2
A:
B:
4
A:BC
B:ACD
C:ABD
D:BC
4
A:BCD
B:ACD
C:ABD
D:ABC
0

Sample Output

1 channel needed.
3 channels needed.
4 channels needed.
技术图片
 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class Main1129 {
 5     static int map[][];
 6     static int temp[],max=1;
 7     static int n;
 8     static boolean bool;
 9     public static void main(String args[])
10     {
11         Scanner sc=new Scanner(System.in);
12         n=sc.nextInt();
13         while(n!=0)//读入图
14         {
15         map=new int[n][n];
16         temp=new int[n];
17         for(int i=0;i<n;i++)
18         {
19             String s=sc.next();
20             s=s.substring(2);
21             for(int j=0;j<s.length();j++)
22                 map[i][s.charAt(j)-65]=1;
23            
24         }
25         
26         dfs(0,1);
27         if(max==1)
28             System.out.println(max+" channel needed.");
29         else
30             System.out.println(max+" channels needed.");
31         max=1;
32         bool=false;
33         n=sc.nextInt();
34         }
35         
36     }
37     public static void dfs(int t,int kind)//点,颜色种类
38     {
39             if(t>=n)
40             {
41                 bool=true;
42             }
43         
44             else
45             {
46                 for(int i=1;i<=kind;i++)
47                 {
48                     if(Bound(t,i))//点t是否可以涂颜色i
49                     {
50                         temp[t]=i;
51                         dfs(t+1,kind);    
52                     }
53                 }
54                 if(!bool)//如果目前所有颜色行不通就加一种新颜色
55                 {
56                     max++;
57                     dfs(t,kind+1);
58                 }
59             }
60     }
61     public static boolean Bound(int t,int c)
62     {
63         for(int i=0;i<n;i++)
64             if(map[t][i]==1&&c==temp[i])
65                 return false;
66         return true;
67     }
68 }
View Code

 

以上是关于POJ-1129 Channel Allocation的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1129 Channel Allocation(DFS)

POJ 1129 Channel Allocation DFS 回溯

POJ-1129 Channel Allocation

poj1129 Channel Allocation(染色问题)

POJ1129Channel Allocation[迭代加深搜索 四色定理]

四色定理+dfs(poj 1129)