水过的 数据弱呵^_^
Accepted
|
C++
|
00:00.01
|
392K
|
#include<stdio.h>
bool judge(int cnt, int n, bool graph[26][26 ])
{
int i, j, k;
int channel[26] = {1 };
for(i = 1; i < n; i++ )
{
for(j = 1; j <= cnt; j++ )
{
for(k = 0; k < n; k++ )
if(graph[i][k] == true && channel[k] == j)
break ;
if(k == n)
{
channel[i] = j;
break ;
}
}
if(j == cnt + 1) return false ;
}
return true ;
}
void solve(int n)
{
int res = 0 , i, j;
bool graph[26][26] = {false };
for(i = 0; i < n; i++ )
{
char ch, ch1;
scanf("%c:", & ch);
ch -= 'A' ;
while(scanf("%c", &ch1) != EOF && ch1 != ' ' )
{
ch1 -= 'A' ;
graph[ch][ch1] = true, graph[ch1][ch] = true ;
}
}
for(i = 0; i < n; i++ )
for(j = 0; j < n; j++ )
if(graph[i][j] == true) break ;
if(i == n && j == n)
printf("1 channel needed./n" );
else if(judge(2 , n, graph))
printf("2 channels needed./n" );
else if(judge(3 , n, graph))
printf("3 channels needed./n" );
else//根据四色定理 结果不可能大于4
printf("4 channels needed./n" );
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1084.txt", "r" , stdin);
#endif
for(int n; scanf("%d ", &n) != EOF && n != 0 ; solve(n));
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}
bool judge(int cnt, int n, bool graph[26][26 ])
{
int i, j, k;
int channel[26] = {1 };
for(i = 1; i < n; i++ )
{
for(j = 1; j <= cnt; j++ )
{
for(k = 0; k < n; k++ )
if(graph[i][k] == true && channel[k] == j)
break ;
if(k == n)
{
channel[i] = j;
break ;
}
}
if(j == cnt + 1) return false ;
}
return true ;
}
void solve(int n)
{
int res = 0 , i, j;
bool graph[26][26] = {false };
for(i = 0; i < n; i++ )
{
char ch, ch1;
scanf("%c:", & ch);
ch -= 'A' ;
while(scanf("%c", &ch1) != EOF && ch1 != ' ' )
{
ch1 -= 'A' ;
graph[ch][ch1] = true, graph[ch1][ch] = true ;
}
}
for(i = 0; i < n; i++ )
for(j = 0; j < n; j++ )
if(graph[i][j] == true) break ;
if(i == n && j == n)
printf("1 channel needed./n" );
else if(judge(2 , n, graph))
printf("2 channels needed./n" );
else if(judge(3 , n, graph))
printf("3 channels needed./n" );
else//根据四色定理 结果不可能大于4
printf("4 channels needed./n" );
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1084.txt", "r" , stdin);
#endif
for(int n; scanf("%d ", &n) != EOF && n != 0 ; solve(n));
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}