原题:ZOJ 1084
题目的大意是说有几个基站相连,每个基站都有一个频道,相连的基站的频道不能相同
暴力搜就好了...
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
int map[50][50],n,p[5];
int color[50];
int f() {
int maax=0;
for(int t=0; t<n; t++) {
memset(p,0,sizeof(p));
for(int i=0; i<n; i++)
if(map[t][i])
p[color[i]]=1;
for(int j=1;; j++)
if(!p[j]) {
color[t]=j;
maax=max(maax,j);
break;
}
}
return maax;
}
int main() {
char s[30];
while(cin>>n&&n) {
memset(map,0,sizeof(map));
memset(color,0,sizeof(color));
for(int j=0; j<n; j++) {
scanf("%s",s);
int t=s[0]-'A';
for(int i=2; i<strlen(s); i++) {
int d=s[i]-'A';
map[t][d]=1;
map[d][t]=1;
}
}
int t=f();
if(t==1)
cout<<t<<" channel needed."<<endl;
else
cout<<t<<" channels needed."<<endl;
}
return 0;
}