POJ 2391 floyd+二分最大流(二)

2014-11-24 08:30:45 · 作者: · 浏览: 1
ad,sizeof(head)); top=0; ll u=s; while(1) { if(t==u) { ll min=inf; ll loc; for(ll i=0;i edge[Stack[i]].cap) { min=edge[Stack[i]].cap; loc=i; } for(ll 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; } ll dist[1000][1000],a[1000],b[1000]; int main() { //freopen("data.in","r",stdin); //freopen("data.out","w",stdout); ll T,t,i,j,k,m,n,p; while(cin>>n>>m) { ll sum=0,left=0,mid,right=0; // cout<<"n,m"< >a[i]>>b[i],sum+=a[i]; for(i=1;i<=n;i++) for(j=1;j<=n;j++)dist[i][j]=inf; // cout<<"sum="< >i>>j>>k; if(dist[i][j]>k)dist[i][j]=dist[j][i]=k; } for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j||i==k||j==k)continue; if(dist[i][j]>dist[i][k]+dist[k][j]) dist[i][j]=dist[i][k]+dist[k][j]; if(dist[i][j]!=inf&&right