POJ 1459 Power Network (dinic进阶)
来源:互联网 发布:电脑端淘宝神笔在哪里 编辑:程序博客网 时间:2024/04/29 05:58
题目大意:
三种类型的点,第一种类型使流量增大,第二种类型使流量减小,第三种类型不改变。问最大流量。
解题思路:
建立一个源点,一个汇点。源点和第一种类型的点连边,汇点和第二种类型的点连边,跑最大流。
</pre><pre name="code" class="html">#include<cstdio>#include<cstring>#include<queue>#include<algorithm>#define INF 0x3ffusing namespace std;const int N=250;int level[N],head[N];int n,t,s,cnt;struct node{int p,f,next;}edge[N*N];void add(int u,int v,int w){edge[cnt].p=v;edge[cnt].f=w;edge[cnt].next=head[u];head[u]=cnt++;edge[cnt].p=u; //反向边。 edge[cnt].f=0;edge[cnt].next=head[v];head[v]=cnt++;}int bfs(){int front=0,rear=0,cur,cl;int que[N];memset(level,-1,sizeof(level));que[rear++]=s;level[s]=0; for(;front!=rear;front=(front+1)%N){ //循环列表。 cur=que[front];cl=level[cur];for(int i=head[cur];i!=-1;i=edge[i].next){if(edge[i].f&&level[edge[i].p]==-1){que[rear]=edge[i].p;level[edge[i].p]=cl+1;rear=(rear+1)%N;}}} return level[t]!=-1;}int dfs(int r,int h){int tmp=0,cp;if(r==t) return h;for(int i=head[r];tmp<h&&i!=-1;i=edge[i].next){if(edge[i].f&&level[r]+1==level[edge[i].p]){ cp=min(h-tmp,edge[i].f); cp=dfs(edge[i].p,cp); edge[i].f-=cp; edge[i^1].f+=cp; //异或运算,相当于i(偶数),与i+1互换,奇数i与i-1互换。2^1=3,3^1=2; tmp+=cp;}}if(!tmp) level[r]=-2;return tmp;}int dinic(){int ans,res=0;while(bfs()){while(ans=dfs(s,INF)) res+=ans;}return res;}int main(){int np,nc,m,u,v,w;char st[10];while(scanf("%d %d %d %d",&n,&np,&nc,&m)!=EOF){s=n;t=n+1;cnt=0;memset(head,-1,sizeof(head));while(m--){scanf(" (%d,%d)%d",&u,&v,&w); //注意,前面有个空格,否则输入变为死循环。 add(u,v,w);}while(np--){scanf(" (%d)%d",&u,&w);add(s,u,w);}while(nc--){scanf(" (%d)%d",&u,&w);add(u,t,w);}printf("%d\n",dinic());}return 0;}
0 0
- POJ 1459 Power Network (dinic进阶)
- poj 1459 Power Network (dinic)
- POJ 1459 Power Network DINIC
- POJ Power Network (dinic)
- POJ 1459 Power Network(最大流+dinic算法模板)
- poj 1459 Power Network(网络流+dinic)
- [POJ 1459 Power Network] Dinic网络流
- poj 1459 Power Network (dinic算法)
- 【最大流+dinic】北大 poj 1459 Power Network
- poj 1459 Power Network : 最大网络流 dinic算法实现
- POJ 1459 && ZOJ 1734--Power Network【最大流dinic】
- Poj 1459 Power Network【最大流Dinic---建图】
- 【最大流 模板 Dinic】POJ 1459 Power Network
- POJ 1459 Power Network(Dinic邻接表+当前弧优化)
- poj(1459)Power Network
- poj1459 Power Network(Dinic多源多汇)
- POJ 1459 Power Network
- POJ 1459 Power Network
- How Many Maos Does the Guanxi Worth
- 处理器内核
- 【POJ3660】【传递闭包】【能确定胜负的含义 +- = n-1】
- 华为数字芯片实习面试经过
- 2015.8.23——张佳莉
- POJ 1459 Power Network (dinic进阶)
- centos6.5 postgresql-9.4下数据库的迁移
- Collection 和 Collections的区别
- printk
- 黑马程序员—学习笔记4-PrintStream
- __main() 和 main()
- AndroidStudio 缓存文件夹配置
- jQuery--编辑表格
- 从虚拟机启动移动硬盘的linux