Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int MX=2e5+5;
- typedef long long ll;
- typedef long double ld;
- bool color[MX];
- vector<int> adj[MX];
- int n;
- void dfs(int x,int pa)
- {
- for(int i=0;i<adj[x].size();i++)
- { int y=adj[x][i];
- if(y==pa)continue;
- color[x]=!color[x];
- cout<<x<<' ';
- dfs(y,x);
- }
- color[x]=!color[x];
- cout<<x<<' ';
- if(color[x])return;
- else
- {
- cout<<pa<<' '<<x<<' ';
- color[pa]=!color[pa];
- color[x]=!color[x];
- return;
- }
- }
- int main()
- {
- cin>>n;
- int t=0;
- for(int i=1;i<=n;i++)
- {
- int x;
- cin>>x;
- if(x==1)color[i]=1;
- else color[i]=0;
- t+=color[i];
- }
- for(int i=1;i<n;i++)
- {
- int x,y;
- cin>>x>>y;
- adj[x].push_back(y);
- adj[y].push_back(x);
- }
- if(t==n)
- {
- cout<<1;
- return 0;
- }
- for(int i=0;i<adj[1].size();i++)
- {
- cout<<1<<' ';
- if(i!=0)
- color[1]=!color[1];
- // cout<<"'"<<color[1]<<"'";
- dfs(adj[1][i],1);
- }
- if(color[1]==0)cout<<1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement