博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3422Kaka's Matrix Travels
阅读量:5355 次
发布时间:2019-06-15

本文共 1859 字,大约阅读时间需要 6 分钟。

最小费用最大流 求的时候把边加为负的 输出的时候再负回来 就变成求的最大费用了

拆点 一个点拆为 i i' i->i'连两条边 一条cap为0 cost为给出的值 另一条cap为INF cost为0 ,i'到右和下分别设置一条边cap为INF cost为0 设置超级源点到1节点 cap为K cost为0

View Code
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #define INF 0xfffffff 8 #define MN 50500 9 #define MM 100100 10 using namespace std; 11 struct node 12 { 13 int u,v,cost,cap,next; 14 }edge[MM]; 15 int head[MN],t,vis[MN],dist[MN],pp[MN]; 16 void init() 17 { 18 t =0; 19 memset(head,-1,sizeof(head)); 20 } 21 void add(int u,int v,int c,int p) 22 { 23 edge[t].u = u; 24 edge[t].v = v; 25 edge[t].cap = c; 26 edge[t].cost = p; 27 edge[t].next = head[u]; 28 head[u] = t++; 29 edge[t].u = v; 30 edge[t].v = u; 31 edge[t].cap = 0; 32 edge[t].cost = -p; 33 edge[t].next = head[v]; 34 head[v] = t++; 35 } 36 int spfa(int s,int en,int n) 37 { 38 int u,v,i; 39 memset(vis,0,sizeof(vis)); 40 memset(pp,-1,sizeof(pp)); 41 for(i = 0 ; i <= n ; i++) 42 dist[i] =INF; 43 queue
q; 44 dist[s] = 0; 45 vis[s] = 1; 46 q.push(s); 47 while(!q.empty()) 48 { 49 u = q.front(); 50 q.pop(); 51 vis[u] = 0; 52 //cout<
<
dist[u]+edge[i].cost) 57 { 58 dist[v] = dist[u]+edge[i].cost; 59 pp[v] = i; 60 if(!vis[v]) 61 { 62 vis[v] = 1; 63 q.push(v); 64 } 65 } 66 } 67 } 68 //cout<
<
edge[i].cap) 82 minf = edge[i].cap; 83 } 84 for(i = pp[en] ; i != -1; i = pp[edge[i].u]) 85 { 86 edge[i].cap -= minf; 87 edge[i^1].cap+=minf; 88 } 89 //cout<
<<" "<
<
>n>>k) 98 { 99 init();100 int s = 0,en = 2*n*n+1;101 add(s,1,k,0);102 add(2*n*n,en,k,0);103 for(i = 1; i <= n ; i++)104 for(j = 1; j <= n ; j++)105 {106 cin>>a;107 add((i-1)*n+j,(i-1)*n+j+n*n,1,-a);108 add((i-1)*n+j,(i-1)*n+j+n*n,INF,0);109 if(i

 

 

转载于:https://www.cnblogs.com/shangyu/archive/2013/03/23/2977220.html

你可能感兴趣的文章
【Qt】Qt Linguist介绍【转】
查看>>
sim usim Uim 区别
查看>>
网页中插入透明Flash的方法和技巧
查看>>
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
查看>>
获取元素属性get_attribute
查看>>
视觉设计师的进化
查看>>
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Lua 语言基本语法
查看>>
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
元类中__new__ 与 __init__的区别--day27
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>