1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long ll; int t,n,m; struct N{ int y,id; }; vector<N> e[200010]; vector<int> av,ae; int now[200010],in[200010],out[200010]; void dfs(int x){ for(int i=now[x];i<e[x].size();i=now[x]){ int y=e[x][i].y,id=e[x][i].id; now[x]=i+1; dfs(y); av.push_back(y); ae.push_back(id); } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>t; while(t--){ cin>>n>>m; for(int i=1;i<=n;i++)in[i]=out[i]=0,now[i]=0,e[i].clear(); for(int i=1,x,y;i<=m;i++){ cin>>x>>y; x++;y++; e[x].push_back({y,i}); out[x]++; in[y]++; } int st=1,fl=1,c1=0,c2=0; for(int i=1;i<=n;i++){ if(out[i]&&!c2)st=i; if(in[i]!=out[i]){ fl=0; if(in[i]-out[i]==1)c1++; else if(out[i]-in[i]==1)c2++,st=i; else{ c1=114514; break; } } } if(!fl&&(c1!=1||c2!=1)){ cout<<"No\n"; continue; } av.clear(); ae.clear(); dfs(st); av.push_back(st); reverse(av.begin(),av.end()); reverse(ae.begin(),ae.end()); if(ae.size()!=m){ cout<<"No\n"; continue; } cout<<"Yes\n"; for(int i:av)cout<<i-1<<" "; cout<<'\n'; for(int i:ae)cout<<i-1<<' '; cout<<'\n'; } return 0; }
- 1
信息
- ID
- 8169
- 时间
- 500ms
- 内存
- 1024MiB
- 难度
- 9
- 标签
- 递交数
- 11
- 已通过
- 4
- 上传者