cf B. I.O.U.
http://codeforces.com/contest/376/problem/B
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 10001 5 using namespace std; 6 7 int n,m; 8 int g[110][110]; 9 10 int main() 11 { 12 while(scanf("%d%d",&n,&m)!=EOF) 13 { 14 memset(g,0,sizeof(g)); 15 for(int i=0; i<m; i++) 16 { 17 int a,b,c; 18 scanf("%d%d%d",&a,&b,&c); 19 g[a][b]=c; 20 } 21 for(int i=1; i<=n; i++) 22 { 23 for(int j=1; j<=n; j++) 24 { 25 for(int k=1; k<=n; k++) 26 { 27 if(g[i][j]>0&&g[j][k]>0) 28 { 29 int c=min(g[i][j],g[j][k]); 30 g[i][j]-=c; 31 g[j][k]-=c; 32 if(i!=k) 33 g[i][k]+=c; 34 } 35 } 36 } 37 } 38 int ans=0; 39 for(int i=1; i<=n; i++) 40 { 41 for(int j=1; j<=n; j++) 42 { 43 ans+=g[i][j]; 44 } 45 } 46 printf("%d\n",ans); 47 } 48 return 0; 49 }