得了十分…………
希望有大佬路过帮忙调调
#include <bits/stdc++.h>
#define me(a,b)memset(a,b,sizeof(a));
using namespace std;
int n,m;
vector <int> edge[100010],dui[100010];
int c[100010];
void dfs(int x)
{
printf("%d ",x);
for(int i=0;i<c[x];i++)
if(!dui[x][edge[x][i]])
{dui[x][edge[x][i]]=1;dfs(edge[x][i]);}
}
int main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
int st=1;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
edge[u].push_back(v);
dui[u].push_back(0);
c[u]++;
}
for(int i=1;i<=n;i++)
sort(edge[i].begin(),edge[i].end());
int ru[100010],chu[100010];
me(ru,0);me(chu,0);
for(int i=1;i<=n;i++)
for(auto j:edge[i])
chu[i]++,ru[j]++;
int x=0,y=0;
for(int i=1;i<=n;i++)
if(ru[i]+1==chu[i]){x++;st=i;}
else if(chu[i]+1==ru[i])y++;
else if(chu[i]!=ru[i]){puts("No");return 0;}
if(x>1||y>1){puts("No");return 0;}
dfs(st);
return 0;
}