ACM 10926 Q10926: How Many Dependencies?
作法:BFS
對每個點作一次BFS 把相連的串起來
/************************************************************/
#include<stdio.h>
#include<stdlib.h>
int map[101][101],maptop[101]={0};
main()
{
int n,m,a,b,c,p;
while(scanf("%d",&n)&&n!=0)
{
for(a=1;a<=n;a++) maptop[a]=0;
for(a=1;a<=n;a++)
{
scanf("%d",&m);
for(b=0;b<m;b++)
{
scanf("%d",&p);
map[a][maptop[a]]=p;
maptop[a]++;
}
}
int max=0,po=0;
for(a=1;a<=n;a++)
{
int queue[101]={0},top=0,appear[101]={0};
queue[0]=a;appear[a]=1;
for(b=0;b<=top;b++)
{
int nn=queue[b];
for(c=0;c<maptop[nn];c++)
if(appear[map[nn][c]]==0)
{
top++;
queue[top]=map[nn][c];
appear[map[nn][c]]=1;
}
}
if(top>max||(top==max&&a<po))
{max=top;po=a;}
}
printf("%d\n",po);
}
return 0;
}