dfs模拟过程
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 110;
int h[N],e[N],ne[N],idx;
bool con;
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx;
idx++;
}
void dfs(int x,int y)
{
for(int i=h[x];i!=-1;i=ne[i])
{
if(e[i]==y)con=true;
dfs(e[i],y);
}
}
int main()
{
int n;
cin>>n;
memset(h,-1,sizeof h);
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
}
for(int i=1;i<=n;i++)
{
bool flag=true;
for(int j=1;j<=n;j++)
{
if(i==j)continue;
con=false;
dfs(j,i);
if(!con)
{
flag=false;
}
}
if(flag)
{
cout<<i<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}