将注释内容更改后即可 AC ,否则 20pts
#include<bits/stdc++.h>
#define ll long long
#define F(i,j,n) for(int i=j;i<=n;i++)
#define Tr(v,e) for(int v:e)
#define D double
#define ps push_back
#define Test ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
const int N=1e6+10,NN=1e4+10;
ll n,m,k,x,y,u,v,w,cnt1=0,cnt2=0,ans[N],t=0,l,r,len,T;
ll mn=INT_MAX,mx=0,Mod,Can=0;
string s1,s2;
ll in[N],out[N],id=1,last[N];
map<pair<int,int>,int> vis;
vector<ll> tr[N];
void dfs(ll id){
cout<<id<<" ";//错误输出
for(int i=last[id];i<tr[id].size();i=last[id]){
v=tr[id][i];
last[id]++;
if(vis[{id,v}]){
vis[{id,v}]--;
dfs(v);
}
}
// ans[++t]=id;记录答案
}
int main(){
cin>>n>>m;
F(i,1,m){
cin>>u>>v;
tr[u].ps(v);
vis[{u,v}]++;
out[u]++,in[v]++;
}
F(i,1,n){
if(out[i]!=in[i]){
Can=1;
if(out[i]==in[i]+1) id=i,cnt1++;
if(in[i]==out[i]+1) cnt2++;
}
}
if(Can&&(cnt1!=1||cnt2!=1)){
cout<<"No";
return 0;
}
F(i,1,n) stable_sort(tr[i].begin(),tr[i].end());
dfs(id);
// for(int i=t;i>=1;i--) cout<<ans[i]<<" ";倒叙输出
return 0;
}