func_code_string: #include <bits/stdc++.h>   using namespace std;   int N, M, P, Q;   int A[101], B[101];   int w[202][202];   bool V[202];   vector<int> path;   bool dfs(int n) {     path.push_back(n);     V[n] = 1;     if (n == N + N + 1) return 1;     for (int i = 0; i <= N + N + 1; i++)       if (!V[i] && w[n][i]) {         if (dfs(i)) return 1;       }     path.pop_back();     return 0;   }   int main() {     ios_base::sync_with_stdio(false);     cin >> N >> M;     for (int i = 1; i <= N; i++) cin >> A[i], w[0][i] = A[i], P += A[i];     for (int i = 1; i <= N; i++)       cin >> B[i], w[N + i][N + N + 1] = B[i], Q += B[i];     for (int i = 1; i <= N; i++) w[i][N + i] = 1e9;     for (int i = 1; i <= M; i++) {       int a, b;       cin >> a >> b;       w[a][N + b] = 1e9;       w[b][N + a] = 1e9;     }     int ans = 0;     while (dfs(0)) {       int flow = 2e9;       for (int i = 1; i < ((int)(path).size()); i++)         flow = min(flow, w[path[i - 1]][path[i]]);       for (int i = 1; i < ((int)(path).size()); i++) {         w[path[i - 1]][path[i]] -= flow;         w[path[i]][path[i - 1]] += flow;       }       ans += flow;       path.clear();       for (int i = 0; i <= N + N + 1; i++) V[i] = 0;     }     if (P != Q || ans != P) {       puts( NO );       return 0;     }     puts( YES );     for (int i = 1; i <= N; i++, puts(  ))       for (int j = 1; j <= N; j++) {         printf( %d  , w[N + j][i]);       }   }   