hdu 3987 最小割(二)

2014-11-24 08:28:30 · 作者: · 浏览: 2
que[rear++]=v; rear%=maxn; if(v==t)return 1; } } } return 0; } __int64 dinic(int s,int t) { __int64 res=0; while(bfs(s,t)) { int Stack[maxn],top,cur[maxn]; memcpy(cur,head,sizeof(head)); top=0; int u=s; while(1) { if(t==u) { __int64 min=inf; int loc; for(int i=0;i edge[Stack[i]].cap) { min=edge[Stack[i]].cap; loc=i; } for(int i=0;i 0)break; if(cur[u]!=-1) { Stack[top++]=cur[u]; u=edge[cur[u]].to; } else { if(top==0)break; dep[u]=-1; u=edge[Stack[--top]].from; } } } return res; } int main() { //freopen("data.in","r",stdin); //freopen("data.out","w",stdout); int i,j,m,T,t,p; __int64 k; scanf("%d",&T); for(t=1;t<=T;t++) { scanf("%d%d",&n,&m); memset(head,-1,sizeof(head));tol=0; while(m--) { scanf("%d%d%I64d%d",&i,&j,&k,&p); add(i,j,k*200001+1); if(p)add(j,i,k*200001+1); } // cout<