题目链接:https://uva.onlinejudge.org/external/128/12821.pdf

比赛的时候,准备用最短路来做,存两张图,做两次最短路,本来还觉得第二张图的设计很好的,很不错,结果过了好多案例,还是莫名其妙的WA了。

好吧,问题来了。

6 7
1 2 1 100
2 3 10 100
1 4 10 100
2 5 1 100
3 6 10 100
4 5 10 100
5 6 1 100

ans = 42,

最短路思路就是不对的。

完了之后,听阳哥说,直接MCMF啊,当时我就傻逼了,主要是我MCMF的题目做少了,不会想到是MCMF。

这里: 每条边的容量是1,花费是边权,然后是超级源点和汇点,容量是2,花费是0。

模板来自刘汝佳,改了Bellman-Ford,用的是SPFA.

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <queue>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 600;
struct Edge
{int from,to,cap,flow,cost;Edge() {}Edge(int a,int b,int c,int d,int e):from(a),to(b),cap(c),flow(d),cost(e) {}
};
struct MCMF
{int n,m,s,t;vector<Edge> edges;vector<int> g[maxn];int inq[maxn];int d[maxn];int p[maxn];int a[maxn];void init(int n){this->n =n;for(int i=0; i<n; i++)g[i].clear();edges.clear();}void addedge(int from,int to,int cap,int cost){Edge e1= Edge(from,to,cap,0,cost), e2= Edge(to,from,0,0,-cost);edges.push_back(e1);edges.push_back(e2);m=edges.size();g[from].push_back(m-2);g[to].push_back(m-1);}bool spfa(int s,int t, int & flow,int & cost){for(int i=0; i<n; i++)d[i]=INF;memset(inq,0,sizeof(inq));d[s]=0;inq[s]=1;p[s]=0;a[s]=INF;queue<int>q;q.push(s);while(!q.empty()){int u=q.front();q.pop();inq[u]=0;for(int i=0; i<g[u].size(); i++){Edge & e = edges[g[u][i]];if(e.cap>e.flow && d[e.to]>d[u]+e.cost){d[e.to]=d[u]+e.cost;p[e.to]=g[u][i];a[e.to]=min(a[u],e.cap-e.flow);if(!inq[e.to]){q.push(e.to);inq[e.to]=1;}}}}if(d[t]==INF)return false;flow+=a[t];cost+=a[t]*d[t];for(int u=t; u!=s; u=edges[p[u]].from){edges[p[u]].flow +=a[t];edges[p[u]^1].flow-=a[t];}return true;}int  MincostMaxflow(int s,int t){int flow=0,cost =0;while(spfa(s,t,flow,cost));return cost;}
} sol;int main()
{freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);int n,m,cas=1;while(scanf("%d%d",&n,&m)!=EOF){int s=0,t=n+1;sol.init(n+2);while(m--){int u,v,c,ad;scanf("%d%d%d%d",&u,&v,&c,&ad);sol.addedge(u,v,1,c);sol.addedge(u,v,1,c+ad);}sol.addedge(s,1,2,0);sol.addedge(n,t,2,0);printf("Case %d: %d\n",cas++,sol.MincostMaxflow(s,t));}
}

转载于:https://www.cnblogs.com/TreeDream/p/5801286.html

UVa(12821),MCMF相关推荐

  1. UVa 489,紫书P79,刽子手游戏

    题目链接:https://uva.onlinejudge.org/external/4/489.pdf 这个题很像之前的一个拓扑排序的题目,思路类似咯. 程序模块化: 每次判断一个字母,lose,wi ...

  2. UVa 11624,两次BFS

    题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624. ...

  3. UVa 10047,独轮车

    题目链接:https://uva.onlinejudge.org/external/100/10047.pdf 题目链接:http://vjudge.net/contest/132239#proble ...

  4. Uva(10048),最短路Floyd

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. Uva 1220,Hali-Bula 的晚会

    题目链接:https://uva.onlinejudge.org/external/12/1220.pdf 题意: 公司n个人,形成一个数状结构,选出最大独立集,并且看是否是唯一解. 分析: d(i) ...

  6. Uva 11400,照明系统设计

    题目链接:https://uva.onlinejudge.org/external/114/11400.pdf 题意:有一个照明系统需要用到n种灯,每种灯的电压为V,电源费用K,每个灯泡费用为C,需要 ...

  7. 矩阵模板hdu5015,UVA 10655,UVA 11149

    hdu5015 n是<=10的,可以想到点什么,, 构造矩阵mat[n+2][n+2] 发现mat*a是答案矩阵第1列 mat的m次方再乘a就是答案矩阵的第m列,取最下面的就行了 这板不错 #i ...

  8. Uva 12563,劲歌金曲,01背包

    题目链接:https://uva.onlinejudge.org/external/125/12563.pdf 题意:n首歌,每首歌的长度给出,还剩 t 秒钟,由于KTV不会在一首歌没有唱完的情况下切 ...

  9. UVa 1339,紫书P73,词频

    题目链接:https://uva.onlinejudge.org/external/13/1339.pdf 紫书P73 解题报告: #include <stdio.h> #include ...

最新文章

  1. Gulp:插件编写入门
  2. Edward Gaming, the Champion 字符串,模拟(2021.11.沈阳)
  3. VS2013+qt-vs-addin-1.2.4安装配置
  4. win10 查看文件扩展名 - 教程篇
  5. vite新建vue3项目采坑,官网流程之路,vite+vue3+elementpuls
  6. 计算机视觉论文-2021-06-18
  7. java for android的书_JavaForAndroid07
  8. 使用Moq、NUnit和Shoulded进行单元测试
  9. 汽车租赁php参考文献,国内外汽车租赁文献综述
  10. 阿里云工程师用机器学习破解雾霾成因
  11. 生物信息数据格式:fastq格式
  12. nc65右键生成菜单_NC常见问题处理
  13. 图片传输(APP端将图片传至服务器端存储)
  14. java arraylist 求和_java-ArrayList中类对象属性的总和
  15. 创建自己的搜索引擎,利用google进行站内搜索
  16. 《汇编语言》第10章 call和ret指令
  17. ubuntu 调整cpu运行模式至高性能
  18. java开发实战经典(第二版)P528 14-2
  19. c语言指针存储的第一个字节,c语言指针详解,学霸课堂记录
  20. 实验六、数据挖掘之关联分析

热门文章

  1. 若依集成aj-captcha实现滑块验证码(单体版)
  2. [ExtJS 6]Grid分页工具栏无效问题解决
  3. php毛玻璃,CSS实现毛玻璃透明效果
  4. MATLAB信号处理之连续时间系统的时域分析
  5. php合图,php合并图片
  6. 将图片文件通过byte[]字节数组Base64加密后给前端显示
  7. css线条伸缩_CSS3弹性伸缩布局(一)——box布局
  8. ftp ---- 虚拟用户登录(实例配置)
  9. nginx ---- 静态资源部署
  10. dict过滤 python_从Python dict获得独特的第一次出现的更有效方法