题目:http://codeforces.com/contest/269/problem/C点击打开链接
题意:给你一张图和流量,使得流量最大,求各边的流的方向?
分析:所有输入流等于输出流
input
4 5 1 2 10 1 3 10 2 3 5 4 2 15 3 4 5
output
0 0 1 1 0
#include <cstdio>
#include <iostream>
using namespace std;
const int M=400400;
int n,m,b[M],c[M],e[M],h[M],d[M],k=2,q[M],l,t,f[M],v[M];
int main()
{
scanf("%d%d",&n,&m);
for(int x,y,z,i=0; i<m&&3==scanf("%d%d%d",&x,&y,&z); ++i)
{
b[k]=y,c[k]=z,e[k]=h[x],h[x]=k++,d[x]+=z;
b[k]=x,c[k]=z,e[k]=h[y],h[y]=k++,d[y]+=z;
}
d[n]*=2,v[q[t++]=1]=1;
while(l<t)
{
for(int i=h[q[l++]]; i>0; i=e[i])if(!v[b[i]])
{
f[i/2]=i&1;
if((d[b[i]]-=c[i]*2)<1)v[q[t++]=b[i]]=1;
}
}
for(int i=1; i<=m; ++i)puts(f[i]?"1":"0");
return 0;
}