directly Code .
# Include <stdio. h> # include <string. h> # define LMT 205 # define EPS 3e8typedef struct {int U, V;} line; line E [LMT * LMT]; int mat [LMT] [LMT], fmat [LMT] [LMT], Q [LMT], lev_[ LMT], Lim [LMT] [LMT]; int n, m; int BFS (int s, int T) {int head, tail, I, j; memset (EV, 0, sizeof (lev)); Head = tail = 0; Q [tail ++] = s; ev [s] = 1; while (Head <tail) {I = Q [head ++]; for (j = 0; j <= n + 1; j ++) if (fmat [I] [J]> 0 & 0 = lev[ J]) {lev[ J] = lev[ I] + 1; Q [tail ++] = J ;}} Return lev[ T]! = 0;} int DFS (int s, int t) {int I, j, Top = 0, ret = 0; Q [top ++] = s; while (top> 0) {I = Q [Top-1]; if (I = T) {int min, back; min = EPS; for (I = 1; I <top; I ++) if (min> fmat [Q [I-1] [Q [I]) {min = fmat [Q [I-1] [Q [I]; back = I;} RET + = min; for (I = 1; I <top; I ++) {fmat [Q [I-1] [Q [I]-= min; fmat [Q [I] [Q [I-1] + = min ;} top = back;} else {for (j = 0; j <= n + 1; j ++) if (fmat [I] [J]> 0 & lev[ J] = lev[ I] + 1) {q [top ++] = J; break ;} if (j> n + 1) {column [I] = 0; top -- ;}}return ret;} int dinic (int s, int t) {int ret = 0; while (BFS (S, T )) {RET + = DFS (S, T);} return ret;} int main () {int I, j, T, sum, N; scanf ("% d", & N, & M); memset (fmat, 0, sizeof (fmat); memset (MAT, 0, sizeof (lim )); T = 0; For (t = 0; t <m; t ++) {scanf ("% d", & I, & J ); scanf ("% d", & Lim [I] [J], & mat [I] [J]); e [T]. U = I; E [T]. V = J;} sum = 0; for (I = 1; I <= N; I ++) {T = 0; For (j = 1; j <= N; j ++) if (I! = J) {fmat [I] [J] = mat [I] [J]-lim [I] [J]; T + = lim [I] [J]-lim [J] [I];} If (T> 0) {fmat [I] [n + 1] = T; sum + = T;} else fmat [0] [I] =-T;} dinic (0, n + 1); for (I = 1; I <= N; I ++) if (fmat [0] [I] | fmat [I] [n + 1]) {printf ("NO \ n"); break ;} if (I> N) {printf ("Yes \ n"); for (I = 0; I <m; I ++) printf ("% d \ n ", lim [E [I]. u] [E [I]. v] + fmat [E [I]. v] [E [I]. u]);} return 0 ;}