原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1001

整理了下之前A的题

平面图可以转化成对偶图,然后(NlogN)的可以求出图的最小割(最大流)

算法合集有具体的讲解,有兴趣的可以在网上搜下或者向我要(QQ30056882)

  1. /**************************************************************
  2. Problem:
  3. User: BLADEVIL
  4. Language: Pascal
  5. Result: Accepted
  6. Time: ms
  7. Memory: kb
  8. ****************************************************************/
  9.  
  10. //By BLADEVIL
  11. var
  12. n, m :longint;
  13. pre, other, len, last :array[..] of longint;
  14. l :longint;
  15. heng, shu, xie :array[..,..] of longint;
  16. tot :longint;
  17. st, fin :longint;
  18. que, d :array[..] of longint;
  19. flag :array[..] of boolean;
  20.  
  21. procedure connect(x,y,z:longint);
  22. begin
  23. inc(l);
  24. pre[l]:=last[x];
  25. last[x]:=l;
  26. other[l]:=y;
  27. len[l]:=z;
  28. end;
  29.  
  30. procedure init;
  31. var
  32. i, j :longint;
  33. min :longint;
  34. begin
  35. read(n,m);
  36. for i:= to n do
  37. for j:= to m- do read(heng[i,j]);
  38.  
  39. for i:= to n- do
  40. for j:= to m do read(shu[i,j]);
  41.  
  42. for i:= to n- do
  43. for j:= to m- do read(xie[i,j]);
  44. min:=maxlongint;
  45. if (n=) or (m=) then
  46. begin
  47. for i:= to n do
  48. for j:= to m do
  49. begin
  50. if heng[i,j]> then if min>heng[i,j] then min:=heng[i,j];
  51. if shu[i,j]> then if min>shu[i,j] then min:=shu[i,j];
  52. if xie[i,j]> then if min>xie[i,j] then min:=xie[i,j];
  53. end;
  54. writeln(min);
  55. halt;
  56. end;
  57. tot:=*(m-)*(n-);
  58. for i:= to tot do
  59. if i mod = then
  60. begin
  61. if ((i mod (*(m-)))>) then
  62. begin
  63. connect(i,i+,shu[i div (*(m-))+,(i mod (*(m-))) div +]);
  64. connect(i+,i,shu[i div (*(m-))+,(i mod (*(m-))) div +]);
  65. end;
  66. if (i-*m+>) then
  67. if ((i mod (*(m-)))>) then
  68. begin
  69. connect(i,i-*m+,heng[i div (*(m-))+,(i mod (*(m-))) div ]);
  70. connect(i-*m+,i,heng[i div (*(m-))+,(i mod (*(m-))) div ]);
  71. end else
  72. begin
  73. connect(i,i-*m+,heng[i div (*(m-)),m-]);
  74. connect(i-*m+,i,heng[i div (*(m-)),m-]);
  75. end;
  76. end else
  77. begin
  78. connect(i,i+,xie[i div (*(m-))+,((i mod (*(m-)))+) div ]);
  79. connect(i+,i,xie[i div (*(m-))+,((i mod (*(m-)))+) div ]);
  80. end;
  81. st:=tot+; fin:=tot+;
  82. for i:= to (m-) do
  83. begin
  84. connect(st,i*,heng[,i]);
  85. connect(i*,st,heng[,i]);
  86. end;
  87. for i:= to (n-) do
  88. begin
  89. connect(st,i**(m-),shu[i,m]);
  90. connect(i**(m-),st,shu[i,m]);
  91. end;
  92. connect(st,*(m-),shu[,m]);
  93. connect(st,*(m-),heng[,m-]);
  94. connect(*(m-),st,shu[,m]);
  95. connect(*(m-),st,heng[,m-]);
  96. for i:= to (m-) do
  97. begin
  98. connect((n-)**(m-)+*i-,fin,heng[n,i]);
  99. connect(fin,(n-)**(m-)+*i-,heng[n,i]);
  100. end;
  101. for i:= to (n-) do
  102. begin
  103. connect(fin,(i-)**(m-)+,shu[i,]);
  104. connect((i-)**(m-)+,fin,shu[i,]);
  105. end;
  106. connect(fin,(n-)**(m-)+,shu[(n-),]);
  107. connect(fin,(n-)**(m-)+,heng[n,]);
  108. connect((n-)**(m-)+,fin,shu[(n-),]);
  109. connect((n-)**(m-)+,fin,heng[n,]);
  110. end;
  111.  
  112. procedure main;
  113. var
  114. i, j :longint;
  115. h, t :longint;
  116. cur :longint;
  117. q, p :longint;
  118.  
  119. begin
  120. que[]:=st;
  121. filldword(d,sizeof(d) div ,maxlongint div );
  122. d[st]:=;
  123. t:=; h:=;
  124. while h<>t do
  125. begin
  126. h:=h mod +;
  127. cur:=que[h];
  128. flag[cur]:=false;
  129. q:=last[cur];
  130. while q<> do
  131. begin
  132. p:=other[q];
  133. if d[cur]+len[q]<d[p] then
  134. begin
  135. d[p]:=d[cur]+len[q];
  136. if not flag[cur] then
  137. begin
  138. t:=t mod +;
  139. que[t]:=p;
  140. flag[p]:=true;
  141. end;
  142. end;
  143. q:=pre[q];
  144. end;
  145. end;
  146. writeln(d[fin]);
  147. end;
  148.  
  149. begin
  150. ///assign(input,'stop.in'); reset(input);
  151. ///assign(output,'stop.out'); rewrite(output);
  152. init;
  153. main;
  154. ///close(output); close(output);
  155. end.

bzoj 1001 平面图转对偶图 最短路求图最小割的更多相关文章

  1. BZOJ 1001 平面图与对偶图的转化 最短路Or最大流

    思路: 1.按照题意求最小割 转换成最大流用Dinic解 2. 转换成对偶图 求最短路 Dinic: //By SiriusRen #include <queue> #include &l ...

  2. hdu 5294 Tricks Device 最短路建图+最小割

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 Tricks Device Time Limit: 2000/1000 MS (Java/Other ...

  3. BZOJ 1001 平面图转对偶图

    原图的面转成点,原图的边依旧边,只是连接的是两个面. 对偶图的点数=原图的面数 对偶图的边数=原图的边数(如果原边只属于一个面,则它为环边) #include<bits/stdc++.h> ...

  4. 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2095  Solved: 1002[Submit][Status] ...

  5. poj 2914(stoer_wanger算法求全局最小割)

    题目链接:http://poj.org/problem?id=2914 思路:算法基于这样一个定理:对于任意s, t   V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Cont ...

  6. 【bzoj1001】【最短路】【对偶图】【最大流转最小割】狼抓兔子题解

    [BZOJ1001]狼抓兔子 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 18872  Solved ...

  7. [BZOJ 1006] [HNOI2008] 神奇的国度 【弦图最小染色】

    题目链接: BZOJ - 1006 题目分析 这道题是一个弦图最小染色数的裸的模型. 弦图的最小染色求法,先求出弦图的完美消除序列(MCS算法),再按照完美消除序列,从后向前倒着,给每个点染能染的最小 ...

  8. bzoj1266 [AHOI2006]上学路线route floyd建出最短路图+最小割

    1266: [AHOI2006]上学路线route Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 2490  Solved: 898[Submit][S ...

  9. HDOJ 5294 Tricks Device 最短路(记录路径)+最小割

    最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Oth ...

随机推荐

  1. python统计日志小脚本

    日志格式如下: [ 2016-06-28T00:10:33-03:00 ] xxx.xx.xx.xxx /api/index/xxx/ ERR: code:400 message: params: c ...

  2. jmeter添加自定义扩展函数之图片base64编码

    打开eclipse,新建maven工程,在pom中引入jmeter核心jar包: <!-- https://mvnrepository.com/artifact/org.apache.jmete ...

  3. CSS里一个奇怪的属性

    事情是这样的,在一个手机界面的制作中,我发现按钮点击后总会出现一个边框,于是开始搜索解决方案.搜到的解决方案是这样的. a:focus,input:focus{ -webkit-tap-highlig ...

  4. FlaskWeb开发从入门到放弃(二)

    第5章 章节五 01 内容概要 02 内容回顾 03 面向对象相关补充:metaclass(一) 04 面向对象相关补充:metaclass(二) 05 WTforms实例化流程分析(一) 06 WT ...

  5. 解析·NOIP·冷门 CLZ最小环

    赐予我力量,去改变我所能改变的;赐予我勇气,去接受我不能改变的;并赐予我智慧,去分辨这两者. -----安东尼达斯 NOIP的图论题中有一部分是跟图上的环有关的.蒟蒻的我在USACO上刷题时发现了一种 ...

  6. GBDT && XGBOOST

                                  GBDT && XGBOOST Outline Introduction GBDT Model XGBOOST Model ...

  7. Python不同进制之间的转换

    不同的进制 二进制    0b101 以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛出SyntaxError异常 八进制    0711 以数字0打头的数字表示八进制数 如果出现大于 ...

  8. win7中输入文件夹首字母跳到相应的文件或者文件夹,却在搜索栏出现输入的字母

    组织->文件夹和搜索选项->查看->在视图中选择键入项

  9. [洛谷P2044][NOI2012]随机数生成器

    题目大意:给你$m,a,c,X_0,n,g$,求$X_{n+1}=(a\cdot X_n+c) \bmod{m}$,最后输出对$g$取模 题解:矩阵快速幂+龟速乘,这里用了$long\;double$ ...

  10. [NOI.AC省选模拟赛3.23] 染色 [点分治+BFS序]

    题面 传送门 重要思想 真的是没想到,我很久以来一直以为总会有应用的$BFS$序,最终居然是以这种方式出现在题目中 笔记:$BFS$序可以用来处理限制点对距离的题目(综合点分树使用) 思路 本题中首先 ...