func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10;   struct edge {     int u, v;     int adj(int x) { return u + v - x; }   };   int n, c[N];   vector<int> adj[N];   vector<edge> e;   int lvl[N], pre[N], root;   vector<int> cycle;   void dfs1(int u) {     for (auto ind : adj[u])       if (ind != pre[u]) {         auto ei = e[ind];         int v = ei.adj(u);         if (lvl[v]) {           if ((lvl[u] + lvl[v]) % 2 == 0 && cycle.empty()) {             for (int w = u; w != v; w = e[pre[w]].adj(w)) cycle.push_back(pre[w]);             reverse((cycle).begin(), (cycle).end());             cycle.push_back(ind);             root = v;           }         } else {           lvl[v] = lvl[u] + 1;           pre[v] = ind;           dfs1(v);         }       }   }   long long int ans[N];   bool vis[N];   long long int dfs2(int u, int pre) {     if (vis[u]) return 0;     vis[u] = 1;     long long int sum = 0;     for (auto ind : adj[u])       if (ind != pre) {         int v = e[ind].adj(u);         sum += dfs2(v, ind);       }     if (pre != -1) ans[pre] = c[u] - sum;     return c[u] - sum;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int m;     cin >> n >> m;     for (int i = 0; i < (int)(n); i++) cin >> c[i];     e.resize(m);     for (int i = 0; i < (int)(m); i++) {       cin >> e[i].u >> e[i].v;       e[i].u--;       e[i].v--;       adj[e[i].u].push_back(i);       adj[e[i].v].push_back(i);     }     bool ok = 1;     for (int u = 0; u < (int)(n); u++)       if (!lvl[u]) {         cycle.clear();         lvl[u] = 1;         pre[u] = -1;         dfs1(u);         if (cycle.empty()) {           ok &= dfs2(u, -1) == 0;         } else {           auto delta = dfs2(root, -1) / 2;           for (auto ind : cycle) {             ans[ind] += delta;             delta = -delta;           }         }       }     if (ok) {       cout <<  YES n ;       for (int i = 0; i < (int)(m); i++) cout << ans[i] <<   n ;     } else       cout <<  NO n ;     return 0;   }   