#include<bits/stdc++.h>
using namespace std;
vector<int>graph[105];
bool color[105];
int counter;
void dfs(int p)
{
color[p]=true;
counter++;
for(int i=0;i<graph[p].size();i++)
{
int v=graph[p][i];
if(color[v]==false)
{
dfs(v);
}
}
}
int main()
{
int tasks,i,j,T,a,task_number,maximum;
while(scanf("%d",&tasks)==1)
{
if(tasks==0)
{
break;
}
for(i=1;i<=tasks;i++)
{
scanf("%d",&T);
for(j=1;j<=T;j++)
{
scanf("%d",&a);
graph[i].push_back(a);
}
}
maximum=0;
for(i=1;i<=tasks;i++)
{
memset(color,false,sizeof(color));
counter=0;
if(color[i]==false)
{
dfs(i);
if(maximum<counter)
{
maximum=counter;
task_number=i;
}
}
}
printf("%d\n",task_number);
for(i=0;i<=tasks;i++)
{
graph[i].clear();
}
}
return 0;
}
using namespace std;
vector<int>graph[105];
bool color[105];
int counter;
void dfs(int p)
{
color[p]=true;
counter++;
for(int i=0;i<graph[p].size();i++)
{
int v=graph[p][i];
if(color[v]==false)
{
dfs(v);
}
}
}
int main()
{
int tasks,i,j,T,a,task_number,maximum;
while(scanf("%d",&tasks)==1)
{
if(tasks==0)
{
break;
}
for(i=1;i<=tasks;i++)
{
scanf("%d",&T);
for(j=1;j<=T;j++)
{
scanf("%d",&a);
graph[i].push_back(a);
}
}
maximum=0;
for(i=1;i<=tasks;i++)
{
memset(color,false,sizeof(color));
counter=0;
if(color[i]==false)
{
dfs(i);
if(maximum<counter)
{
maximum=counter;
task_number=i;
}
}
}
printf("%d\n",task_number);
for(i=0;i<=tasks;i++)
{
graph[i].clear();
}
}
return 0;
}
0 comments: (+add yours?)
Post a Comment