标签:div nbsp == color pre pac class oid i++
欧拉回路
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+5,M=4e5+5; 4 int t,n,m,tot,in[N],ou[N],ans[M]; 5 int cnt,fro[N],to[M],nxt[M]; 6 bool vis[M]; 7 void add(int x,int y) { 8 to[++cnt]=y,nxt[cnt]=fro[x]; fro[x]=cnt; 9 in[y]++,ou[x]++; 10 } 11 12 void DFS(int x) { 13 for(int &i=fro[x];i;i=nxt[i]) { 14 int h=i; 15 if(t==1) { 16 int k=(i+1)>>1; 17 if(!vis[k]) { 18 vis[k]=1; DFS(to[i]); 19 if(h&1) ans[++tot]=k; else ans[++tot]=-k; 20 } 21 } 22 else if(!vis[i]) { 23 vis[i]=1; DFS(to[i]); 24 ans[++tot]=h; 25 } 26 } 27 } 28 29 int main() { 30 t=read(); 31 n=read(),m=read(); 32 for(int i=1;i<=m;i++) { 33 int u=read(),v=read(); 34 add(u,v); if(t==1) add(v,u); 35 } 36 if(t==1) for(int i=1;i<=n;i++) if(in[i]&1) return printf("NO"),0; 37 if(t==2) for(int i=1;i<=n;i++) if(in[i]^ou[i]) return printf("NO"),0; 38 DFS(to[1]); 39 if(tot<m) return printf("NO"),0; 40 printf("YES\n"); 41 for(int i=tot;i;i--) printf("%d ",ans[i]); 42 }
标签:div nbsp == color pre pac class oid i++
原文地址:https://www.cnblogs.com/qq8260573/p/10610527.html