赛时写的dfs为什么不能过(AC15 WA24),不就是找大小最小的环吗
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct nd{
int to,nxt;
}li[400002];
int ind[200002],ptr;
void add(int x,int y)
{
++ptr;
li[ptr]=((nd){y,ind[x]});
ind[x]=ptr;
}
int dfsx[200002],lowx[200002],cnt;
int ans;
bool vis[200002];
void dfs(int x,int dep)
{
dfsx[x]=dep;
vis[x]=true;
for(int i=ind[x];i!=-1;i=li[i].nxt)
{
if(!vis[li[i].to])
{
vis[li[i].to]=true;
dfs(li[i].to,dep+1);
}else{
if(li[i].to==1)
{
ans=min(ans,dep);
}
}
}
// vis[x]=false;
}
int main()
{
cin>>n>>m;
int x,y;
memset(ind,-1,sizeof(ind));
for(int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
add(x,y);
}
ans=0x3f3f3f3f;
dfs(1,1);
if(ans>n)
{
cout<<"-1";
}else{
cout<<ans;
}
return 0;
}