http://acm.hdu.edu.cn/showproblem.php?pid=3435

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <queue>
  5. #include <algorithm>
  6. #define inf 0x3f3f3f3f
  7. #define maxn 54444
  8. using namespace std;
  9.  
  10. queue<int>q;
  11. struct node
  12. {
  13. int u,v,next,val,f;
  14. } p[maxn];
  15. int head[maxn];
  16. bool vis[maxn];
  17. int dis[maxn];
  18. int pre[maxn];
  19. int n,m,s,t,e;
  20.  
  21. void add(int u,int v,int f,int c)
  22. {
  23. p[e].u=u;
  24. p[e].v=v;
  25. p[e].f=f;
  26. p[e].val=c;
  27. p[e].next=head[u];
  28. head[u]=e++;
  29. p[e].u=v;
  30. p[e].v=u;
  31. p[e].f=;
  32. p[e].val=-c;
  33. p[e].next=head[v];
  34. head[v]=e++;
  35.  
  36. }
  37.  
  38. bool spfa()
  39. {
  40. int j,k,i;
  41. while(!q.empty()) q.pop();
  42. memset(vis,false,sizeof(vis));
  43. memset(dis,0x3f,sizeof(dis));
  44. memset(pre,-,sizeof(pre));
  45. vis[s]=true;
  46. dis[s]=;
  47. q.push(s);
  48. while(!q.empty())
  49. {
  50. int u=q.front();
  51. q.pop();
  52. vis[u]=false;
  53. for(j=head[u]; j!=-; j=p[j].next)
  54. {
  55. int v=p[j].v;
  56. if(p[j].f&&dis[u]+p[j].val<dis[v])
  57. {
  58. dis[v]=dis[u]+p[j].val;
  59. pre[v]=j;
  60. if(!vis[v])
  61. {
  62. vis[v]=true;
  63. q.push(v);
  64. }
  65. }
  66. }
  67. }
  68. return dis[t]!=inf;
  69. }
  70.  
  71. int mincost()
  72. {
  73. int ret=,u;
  74. while(spfa())
  75. {
  76. u=pre[t];
  77. ret+=dis[t];
  78. while(u!=-)
  79. {
  80. p[u].f--;
  81. p[u^].f++;
  82. u=pre[p[u].u];
  83. }
  84. }
  85. return ret;
  86. }
  87. int main()
  88. {
  89. int case1;
  90. scanf("%d",&case1);
  91. for(int k=; k<=case1; k++)
  92. {
  93. e=;
  94. memset(head,-,sizeof(head));
  95. scanf("%d%d",&n,&m);
  96. s=;
  97. t=*n+;
  98. for(int i=; i<=m; i++)
  99. {
  100. int a,b,c;
  101. scanf("%d%d%d",&a,&b,&c);
  102. add(a,b+n,,c);
  103. add(b,a+n,,c);
  104. }
  105. for(int i=; i<=n; i++)
  106. {
  107. add(s,i,,);
  108. add(i+n,t,,);
  109. }
  110. int j;
  111. int ans=mincost();
  112. for(j=head[s]; j!=-; j=p[j].next)
  113. if(p[j].f!=) break;
  114. if(j==-) printf("Case %d: %d\n",k,ans);
  115. else printf("Case %d: NO\n",k);
  116. }
  117. return ;
  118. }

hdu 3435 A new Graph Game的更多相关文章

  1. HDU 3435 A new Graph Game(最小费用流:有向环权值最小覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=3435 题意:有n个点和m条边,你可以删去任意条边,使得所有点在一个哈密顿路径上,路径的权值得最小. 思路: 费用 ...

  2. 【刷题】HDU 3435 A new Graph Game

    Problem Description An undirected graph is a graph in which the nodes are connected by undirected ar ...

  3. HDU 3435 A new Graph Game(最小费用最大流)&amp;HDU 3488

    A new Graph Game Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. 【HDU 3435】 A new Graph Game (KM|费用流)

    A new Graph Game Problem Description An undirected graph is a graph in which the nodes are connected ...

  5. HDU 6343.Problem L. Graph Theory Homework-数学 (2018 Multi-University Training Contest 4 1012)

    6343.Problem L. Graph Theory Homework 官方题解: 一篇写的很好的博客: HDU 6343 - Problem L. Graph Theory Homework - ...

  6. HDU 3435 KM A new Graph Game

    和HDU 3488一样的,只不过要判断一下是否有解. #include <iostream> #include <cstdio> #include <cstring> ...

  7. HDU 5876:Sparse Graph(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5876 Sparse Graph Problem Description   In graph theory, t ...

  8. HDU 6343 - Problem L. Graph Theory Homework - [(伪装成图论题的)简单数学题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6343 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  9. HDU 5631 Rikka with Graph 暴力 并查集

    Rikka with Graph 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5631 Description As we know, Rikka ...

随机推荐

  1. Java Socket 编程指南

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  2. Number Sequence - HDU 1711(KMP模板题)

    题意:给你一个a串和一个b串,问b串是否是a串的子串,如果是返回b在a中最早出现的位置,否则输出-1   分析:应该是最简单的模板题了吧..... 代码如下: ==================== ...

  3. N - 畅通工程再续 - hdu 1875

    Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题 ...

  4. 中国四大资产管理公司 ACM

    一,来历和主要业务 国家于1999年成立了四家直属国务院的资产管理公司:中国东方资产管理公司.中国信达资产管理公司.中国华融资产管理公司.中国长城资产管理公司.由于资产公司一般是是为适应体制转轨或防范 ...

  5. JS验证手机号码

    对于表单的验证是添加信息的时候必不可少的. 下面是基于EasyUI-validatebox拓展的对手机.座机号的验证方法. PhoneAndMobile: { validator: function ...

  6. Media PLayer

    PotPlayer http://potplayer.daum.net/?lang=zh_CN KMPlayer 的原制作者姜龙喜先生(韩国)进入 Daum 公司后的新一代作品.PotPlayer 的 ...

  7. PHP读取文件内容的三种方式

    <?php // 第一种读取方式 header("content-type:text/html;charset=utf-8"); // 文件路径 $fileA = " ...

  8. windows下Socket链接溢出

    最近在windows下使用通过多线程使用jdbc操作数据库,在线程数设置为5,并且每个线程执行完成后Sleep(1000),在这种情况下,竟然还会报错: java.net.SocketExceptio ...

  9. 《网络编程》先进 I/O

    这部分是高级插座 I/O . 设置套接字超时报警,使用更方便的数据传输功能. 套接字 I/O 设置操作超时有三种方法: 转让 alarm 性能,制作时,它指定超时 SIGALRM 信号: 在 sele ...

  10. Ubuntu12.04下使用valgrind内存测试工具测试Qt程序

    1. 到官网http://valgrind.org/downloads/上下载valgrind最新版本: 2. 解压源码,执行./configure;make;make install后,默认安装到/ ...