N - Channel Allocation
#include<stdio.h>
#include<string.h>
int main()
{
int n, map[27], book[27][27], i, j;
char a[27];
while(~scanf("%d", &n), n)
{
memset(book, 0, sizeof(book));
memset(map, 0, sizeof(map));
for(i=1;i<=n;i++)
{
scanf("%s", a);
for(j=2;a[j]!='\0';j++)
book[i][a[j]-'A'+1]=1;
}
int c[27]={0};
for(i=1;i<=n;i++)
{
memset(c, 0, sizeof(c));
for(j=1;j<=n;j++)
if(book[i][j])
c[map[j]]=1;
for(j=1;j<=n;j++)
if(c[j]==0)
{
map[i]=j;
break;
}
}
int temp=0;
for(i=1;i<=n;i++)
if(map[i]>temp)
temp=map[i];
if(temp>1)
printf("%d channels needed.\n", temp);
else
printf("%d channel needed.\n", temp);
}
return 0;
}