Sabotage UVA - 10480 (输出割边)】的更多相关文章

题意:....emm...就是一个最小割最大流,.,...用dinic跑一遍.. 然后让你输出割边,就是 u为能从起点到达的点,  v为不能从起点到达的点 最后在残余路径中用dfs跑一遍  能到达的路标记一下 然后循环判断输出即可  还有不要忘了是正向路  所以循环时i+=2 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map…
题目大意:旧政府有一个很庞大的网络系统,可以很方便的指挥他的城市,起义军为了减少伤亡所以决定破坏他们的网络,使他们的首都(1号城市)和最大的城市(2号城市)不能联系,不过破坏不同的网络所花费的代价是不同的,现在起义军想知道最少花费的代价是多少,输出需要破坏的线路. 输入:第一行输入一个N和M,表示城市数和线路数,下面M行,每行有三个整数,表示从破坏城市u到v的线路花费是w.   分析:很明显的最小割问题,我们知道有向图(题目给的是无向图,所以需要建立反边)的最小割等于最大流,所以只需要求出来最大…
链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82835#problem/J 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; #define N 100005 #define INF 0x3ffff…
UVA - 10480 Sabotage 题意:现在有n个城市,m条路,现在要把整个图分成2部分,编号1,2的城市分成在一部分中,拆开每条路都需要花费,现在问达成目标的花费最少要隔开那几条路. 题解:建图直接按给你的图建一下,然后呢跑一下最大流,我们就知道了最小割是多少,答案就是最小割了  . 现在要求输出割法.我们从s开始往前跑,如果某条正向边有流量,我们就按着这条边继续往外走,知道无法再走,把所有经历过的点都染一下色.最后看所有的边,是不是有一头是染色了,另一头没有染色,如果是,这条边就是割…
UVA 10480 Sabotage (网络流,最大流,最小割) Description The regime of a small but wealthy dictatorship has been abruptly overthrown by an unexpected rebel-lion. Because of the enormous disturbances this is causing in world economy, an imperialist military super…
表示自从学了网络流,就基本上是一直用dinic 这个题一看就是用最大流,作为常识,两个点之间的最大流等于最小割 但是这个题需要输出割边,然后我就不会了,dinic判流量我觉得也可做,但是一直wa 然后看了看网上的代码,居然用EK暴力,仰慕不已,不过一看数据范围(EK很合理嘛!!!) 关键是用EK可以很容易判断割边 感悟:还是too young too simple 不过让我找回了最初学网络流时的感觉 分析见这里:无限仰慕美女大神 http://blog.csdn.net/ac_lion/arti…
题目链接 很容易会想到是最大流建边,但是同样的这里有坑点,就是有的人去输出边的时候,去把残余网络的流为0的边给输出了,其实不然,我们应当输出的是那些最后跑到深度为0的不能再走下去的点,只要把他们割了,就一定会是最优的解. #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring> #include <algorithm…
题目 题意: 编写一个程序,给定一个网络规范和破坏每个连接的成本,确定要切断哪个连接,以便将首都和最大的城市分离到尽可能低的成本. 分割----------------------------------------- 这道题的意思要把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边.这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点.问题是要求最小割应该隔断那条边. 输入: 输入文件包含几组输入.每一组的描述如下.每个集合的第一行有两个整…
题意: 把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边.这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点,问题是要求最小割应该隔断那条边. 思路: 最小割,就是在所有割中,容量之和最小的割,这就是我的理解,而最小割的值就是最大流的值,因为很容易想到,从源点s到汇点t的最大流必然会经过割边,那么就有最大流f<=c(割边的值),那么也就是说,当c==f的时候,就是c为小割,即最大流==最小割.第二点,怎么求出最小割的边:在求出最大流之后,…
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1421 题意:给出n个点m条边,每条边有一个花费,问将1和2隔离需要破坏的边的最小花费的边集. 思路:很明显是最小割,但是问题在于如何求出这个最小割集.通过以前的题目,求网络的最大流就是求网络的最小割,那么从源点到汇点的最大流必定就会经过最小割集的边,当这条边满载(flow == cap)的…