开O2 RE10分
不开O2 就AC了
问下大佬们是什么原因
#include<bits/stdc++.h>
using namespace std;
int n,m,st,ed;
int ind[101101],oud[101101];
int lst[101101];
vector<int> a[101101];
stack<int> stk;
int dfs(int x)
{
for(int i=lst[x];i<a[x].size();i=lst[x])
{
lst[x]=i+1;
dfs(a[x][i]);
}
stk.push(x);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
a[u].push_back(v);
ind[v]++,oud[u]++;
}
int ls=0,le=0;
bool flag1=1,flag2=1;
for(int i=1;i<=n;i++)
{
if(ind[i]!=oud[i])
{
flag1=0;
if(oud[i]-ind[i]==1) ls=st,st=i;
if(ind[i]-oud[i]==1) le=ed,ed=i;
}
sort(a[i].begin(),a[i].end());
}
if(ls||le)flag2=0;
if(flag1) st=1;
else if(!flag2){printf("No");return 0;}
dfs(st);
while(!stk.empty()) printf("%d ",stk.top()),stk.pop();
return 0;
}