设为首页 加入收藏

TOP

zoj 2314 Reactor Cooling 有上下界的网络最大流
2016-01-29 16:36:11 】 浏览:4606
Tags:zoj 2314 Reactor Cooling 上下 网络 最大

输出的时候发现不会对原来的矩阵排序,只好重新搞了一储存边的一维数组,然后排序。

#include
   
     using namespace std; const int N=256; const int inf=0x7fffffff; struct type { int b,c,f; int no; }; struct node { int no,f; }g[20000+5]; int cmp(node a,node b) { return a.no
    
     Q; Q.push(s); while(!Q.empty()&&flag[t]==-1) { u=Q.front(); Q.pop(); for(i=s; i<=t; i++) { if(flag[i]!=-1) continue; if(network[u][i].c
     
      network[i][u].b) { flag[i]=0; p[i]=u; a[i]=min(a[u],network[i][u].f-network[i][u].b); Q.push(i); } } flag[u]=1; } if(flag[t]==-1||a[t]==0) break; int k1=t,k2=p[k1]; while(1) { if(network[k2][k1].f
      
       sum1) AccEdge[0][i].c=sum2-sum1,AccEdge[0][i].b=AccEdge[0][i].f=0; else AccEdge[i][n+1].c=sum1-sum2,AccEdge[i][n+1].b=AccEdge[i][n+1].f=0; } for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(AccEdge[i][j].c!=inf) { AccEdge[i][j].c=AccEdge[i][j].c-AccEdge[i][j].b; AccEdge[i][j].b=0; } Ford(AccEdge,0,n+1); bool ok=1; for(i=0; i<=n+1; i++) { if(AccEdge[0][i].c!=inf&&AccEdge[0][i].f!=AccEdge[0][i].c) ok=0; } if(!ok) printf(NO ); else { int tp=0; printf(YES ); for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(Edge[i][j].c!=inf) { Edge[i][j].f=AccEdge[i][j].f+Edge[i][j].b; g[tp].f=Edge[i][j].f; g[tp].no=Edge[i][j].no; tp++; } sort(g,g+tp,cmp); for(i=0;i
       
      
     
    
   

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UVA - 10603 Fill(隐式图搜索) 下一篇UVA - 11374 Airport Express(dij..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目