这是个什么错误啊啊啊啊啊啊啊:
Wrong Answer.wrong answer Edge didn't exist
代码:
#include<bits/stdc++.h>
using namespace std;
#define re register int
const int N=100004,M=200003;
int n,m,cnt;
struct edge{
int u,v;
bool vis;
}to[M];
int fa[N],ans[N];
vector<int>t[N];
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
void dfs(int x,int f)
{
cnt++;
ans[x]=f;
for(re i=0;i<t[x].size();i++)
{
if(!ans[t[x][i]])
dfs(t[x][i],x);
}
}
void krus()
{
for(re i=1;i<=m;i++)
{
int nu=find(to[i].u),nv=find(to[i].v);
if(nu==nv) continue;
fa[nu]=nv;
t[nu].push_back(nv);
t[nv].push_back(nu);
to[i].vis=1;
}
for(re i=1;i<=m;i++)
{
if(to[i].vis||(find(to[i].u)!=find(to[i].v))||ans[to[i].u]) continue;
dfs(to[i].u,to[i].v);
}
if(cnt!=n)
{
putchar('N');
putchar('I');
putchar('E');
putchar('\n');
}
else
{
cout<<"TAK"<<endl;
for(re i=1;i<=n;i++)
cout<<ans[i]<<endl;
}
}
int main()
{
ios::sync_with_stdio(0);
cin>>n>>m;
for(re i=1;i<=m;i++)
cin>>to[i].u>>to[i].v;
for(re i=1;i<=n;i++)
fa[i]=i;
krus();
return 0;
}