Uva 10480 Sabotage 最大流
表示自从学了网络流,就基本上是一直用dinic
这个题一看就是用最大流,作为常识,两个点之间的最大流等于最小割
但是这个题需要输出割边,然后我就不会了,dinic判流量我觉得也可做,但是一直wa
然后看了看网上的代码,居然用EK暴力,仰慕不已,不过一看数据范围(EK很合理嘛!!!)
关键是用EK可以很容易判断割边
感悟:还是too young too simple 不过让我找回了最初学网络流时的感觉
分析见这里:无限仰慕美女大神
http://blog.csdn.net/ac_lion/article/details/8620676
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <string>
#include <stack>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <utility>
using namespace std;
typedef long long LL;
const int N=;
const int INF=0x3f3f3f3f;
int cap[N][N],flow[N][N],n,m;
int p[N],a[N],x[N*],y[N*];
void maxflow(){
queue<int>q;
memset(flow,,sizeof(flow));
int f=;
while(){
memset(a,,sizeof(a));
while(!q.empty())q.pop();
a[]=INF;q.push();
while(!q.empty()){
int u=q.front();q.pop();
if(u==)break;
for(int v=;v<=n;++v)
if(!a[v]&&flow[u][v]<cap[u][v]){
p[v]=u;a[v]=min(a[u],cap[u][v]-flow[u][v]);
q.push(v);
}
}
if(!a[])break;
for(int u=;u!=;u=p[u]){
flow[p[u]][u]+=a[];
flow[u][p[u]]-=a[];
}
f+=a[];
}
}
int main()
{
while(~scanf("%d%d",&n,&m)){
if(!n&&!m)break;
memset(cap,,sizeof(cap));
for(int i=;i<m;++i){
int w;scanf("%d%d%d",&x[i],&y[i],&w);
cap[x[i]][y[i]]=cap[y[i]][x[i]]=w;
}
maxflow();
for(int i=;i<m;++i){
if((!a[x[i]]&&a[y[i]])||(a[x[i]]&&!a[y[i]]))
printf("%d %d\n",x[i],y[i]);
}
printf("\n");
}
return ;
}
Uva 10480 Sabotage 最大流的更多相关文章
- UVA 10480 Sabotage (最大流) 最小割边
题目 题意: 编写一个程序,给定一个网络规范和破坏每个连接的成本,确定要切断哪个连接,以便将首都和最大的城市分离到尽可能低的成本. 分割-------------------------------- ...
- UVA 10480 Sabotage (网络流,最大流,最小割)
UVA 10480 Sabotage (网络流,最大流,最小割) Description The regime of a small but wealthy dictatorship has been ...
- UVA - 10480 Sabotage 最小割,输出割法
UVA - 10480 Sabotage 题意:现在有n个城市,m条路,现在要把整个图分成2部分,编号1,2的城市分成在一部分中,拆开每条路都需要花费,现在问达成目标的花费最少要隔开那几条路. 题解: ...
- J - Sabotage - UVA 10480(最大流)
题目大意:旧政府有一个很庞大的网络系统,可以很方便的指挥他的城市,起义军为了减少伤亡所以决定破坏他们的网络,使他们的首都(1号城市)和最大的城市(2号城市)不能联系,不过破坏不同的网络所花费的代价是不 ...
- UVA - 10480 Sabotage【最小割最大流定理】
题意: 把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边.这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点,问题是要求最小割应该隔断那条边. ...
- UVA - 10480 Sabotage (Dinic)
The regime of a small but wealthy dictatorship has been abruptly overthrown by an unexpected rebel-l ...
- UVA 10480 Sabotage (最大流最小割)
题目链接:点击打开链接 题意:把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边. 这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点. 问题是 ...
- UVA 10480 Sabotage
最小割+输出方案 #include<cstdio> #include<cstring> #include<string> #include<cmath> ...
- Sabotage 【UVA - 10480】【最大流割边】
题目链接 很容易会想到是最大流建边,但是同样的这里有坑点,就是有的人去输出边的时候,去把残余网络的流为0的边给输出了,其实不然,我们应当输出的是那些最后跑到深度为0的不能再走下去的点,只要把他们割了, ...
随机推荐
- 微软职位内部推荐-Senior SDE for Cloud Platform
微软近期Open的职位: Microsoft Launched the public cloud service-Azure in China on May 2013, Cosmos is the k ...
- 多智能体仿真环境 NetLogo
http://ccl.northwestern.edu/netlogo/ 创建agentcreate-turtles 10 动一动ask turtle 0 [forward 10 right 90 l ...
- hdu 4190
二分求箱子中的票数 然后判是否满足条件 主要为了纪念一下用优先队列9000ms水过 #include<cstdio> #include<climits> #inclu ...
- spoj 1436
用并查集看一下是否会围成一个环 若围成环直接输出NO 当然 当 m >= n 时必然会围成环直接输出NO #include <algorithm> #include < ...
- MySQL性能优化的21个最佳实践
http://www.searchdatabase.com.cn/showcontent_38045.htm MySQL性能优化的21个最佳实践 1. 为查询缓存优化你的查询 大多数的MySQL服务器 ...
- POJ 3393 Lucky and Good Months by Gregorian Calendar
http://poj.org/problem?id=3393 题意 : 对于这篇长长的英语阅读,表示无语无语再无语,花了好长时间,终于读完了.题目中规定每周的周六日为假日,其他为工作日,若是一个月的第 ...
- ZOJ Monthly, November 2014
做了一次月赛,没想到这么难,加上后来补上的题目也只有3个题.第一名也只有4个题啊啊啊啊~.其中两道还是水题.留坑慢慢补上来. 3832 Tilt Cylinder 给定如图所示有盖圆柱体,R,H,水面 ...
- 选择排序的MPI实现
#include "stdafx.h" #include "mpi.h" #include <stdio.h> #include <math. ...
- Yii cookie操作
设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie->expire = time()+60* ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(3)
这里说一下在建测试工程里遇到的问题 1.第一次建工程,junit依赖始终没有成功,最后删除现在工程,新建了一个工程就好了 2.使用junit4的问题.工程默认的依赖是junit3.8.1,我改成了4. ...