func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m;   int visited[200001];   int colour[200001];   vector<int> adj_list[200001];   int* graph[1000001];   int* finalcolour[1000001];   int size[1000001];   int check;   int count1 = 0;   int k[9];   int l[9];   int dp[9][1001];   int A[9][11];   int c[9][10];   bool pairCompare(const pair<int, int>& firstElem,                    const pair<int, int>& secondElem) {     return firstElem.first > secondElem.first;   }   int solve(int cards, int coins) {     int i;     if (cards <= 0) return 0;     if (dp[cards][coins] != -1) return dp[cards][coins];     int ret = A[cards][l[cards]] + solve(cards - 1, coins);     int use = 0;     int coins_left = coins;     for (i = l[cards] + 1; i <= k[cards]; i++) {       coins_left = coins_left - c[cards][i - 1];       if (coins_left >= 0)         ret = max(ret, A[cards][i] + solve(cards - 1, coins_left));       else         break;     }     dp[cards][coins] = ret;     return ret;   }   long long powe(long long a, long long b, long long k) {     if (b == 0) return 1;     long long temp = powe(a, b / 2, k);     temp *= temp;     if (temp >= k) temp %= k;     if (b % 2 == 1) temp *= a;     if (temp >= k) temp %= k;     return temp;   }   void dfs(int x) {     int i;     visited[x] = 1;     for (i = 0; i < adj_list[x].size(); i++) {       if (visited[adj_list[x][i]] == 0) {         printf( %d  , x);         if (colour[x] == -1) {           colour[x] = 1;         } else {           colour[x] = -1;         }         dfs(adj_list[x][i]);         if (colour[adj_list[x][i]] == -1) {           printf( %d %d  , x, adj_list[x][i]);           colour[adj_list[x][i]] = 1;           if (colour[x] == -1) {             colour[x] = 1;           } else {             colour[x] = -1;           }         }       }     }     printf( %d  , x);     if (colour[x] == -1) {       colour[x] = 1;     } else {       colour[x] = -1;     }   }   int main() {     int n, i, count = 0;     scanf( %d , &n);     for (i = 1; i <= n; i++) {       scanf( %d , &colour[i]);       visited[i] = 0;       if (colour[i] == 1) count++;     }     for (i = 1; i < n; i++) {       int x, y;       scanf( %d %d , &x, &y);       adj_list[x].push_back(y);       adj_list[y].push_back(x);     }     if (count == n) {       printf( 1 n );       return 0;     }     if (colour[1] == -1)       colour[1] = 1;     else       colour[1] = -1;     dfs(1);     if (colour[1] == -1) {       printf( %d 1 %d  , adj_list[1][0], adj_list[1][0]);     }     return 0;   }   