表示自从学了网络流,就基本上是一直用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 最大流的更多相关文章

  1. UVA 10480 Sabotage (最大流) 最小割边

    题目 题意: 编写一个程序,给定一个网络规范和破坏每个连接的成本,确定要切断哪个连接,以便将首都和最大的城市分离到尽可能低的成本. 分割-------------------------------- ...

  2. UVA 10480 Sabotage (网络流,最大流,最小割)

    UVA 10480 Sabotage (网络流,最大流,最小割) Description The regime of a small but wealthy dictatorship has been ...

  3. UVA - 10480 Sabotage 最小割,输出割法

    UVA - 10480 Sabotage 题意:现在有n个城市,m条路,现在要把整个图分成2部分,编号1,2的城市分成在一部分中,拆开每条路都需要花费,现在问达成目标的花费最少要隔开那几条路. 题解: ...

  4. J - Sabotage - UVA 10480(最大流)

    题目大意:旧政府有一个很庞大的网络系统,可以很方便的指挥他的城市,起义军为了减少伤亡所以决定破坏他们的网络,使他们的首都(1号城市)和最大的城市(2号城市)不能联系,不过破坏不同的网络所花费的代价是不 ...

  5. UVA - 10480 Sabotage【最小割最大流定理】

    题意: 把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边.这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点,问题是要求最小割应该隔断那条边. ...

  6. UVA - 10480 Sabotage (Dinic)

    The regime of a small but wealthy dictatorship has been abruptly overthrown by an unexpected rebel-l ...

  7. UVA 10480 Sabotage (最大流最小割)

    题目链接:点击打开链接 题意:把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边. 这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点. 问题是 ...

  8. UVA 10480 Sabotage

    最小割+输出方案 #include<cstdio> #include<cstring> #include<string> #include<cmath> ...

  9. Sabotage 【UVA - 10480】【最大流割边】

    题目链接 很容易会想到是最大流建边,但是同样的这里有坑点,就是有的人去输出边的时候,去把残余网络的流为0的边给输出了,其实不然,我们应当输出的是那些最后跑到深度为0的不能再走下去的点,只要把他们割了, ...

随机推荐

  1. ios 中定时器:NSTimer, CADisplayLink, GCD

    #import "ViewController.h" #import "RunloopViewController.h" @interface ViewCont ...

  2. Xcode6中autolayout和sizeclass的使用

    一.关于自动布局(Autolayout) 在Xcode中,自动布局看似是一个很复杂的系统,在真正使用它之前,我也是这么认为的,不过事实并非如此. 我们知道,一款iOS应用,其主要UI组件是由一个个相对 ...

  3. 动态设置uitableview高度,参考

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { //  ...

  4. (转)inux Read系统调用

    转载网址:http://my.oschina.net/haomcu/blog/468656 1. 什么是系统调用 2. read系统调用在内核空间的处理层次模型 3. 相关的内核数据结构 4. rea ...

  5. C#中字符串驻留技术

    转自:http://www.cnblogs.com/Charles2008/archive/2009/04/12/1434115.html MSDN概念:公共语言运行库通过维护一个表来存放字符串,该表 ...

  6. 3150 Pibonacci数 - Wikioi

    题目描述 Description 你可能听说过的Fibonacci数和圆周率Pi. 如果你让这两个概念合并,一个新的深奥的概念应运而生:Pibonacci数. 这些数可以被定义为对于x>=0: ...

  7. MySQL的基本命令

    MySQL的基本命令 启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库 ...

  8. JavaScript里最有效率的功能特征检测方法

    代码执行效率对于程序员和程序来说都是至关重要的,尤其是遇到了那些需要大量调用.反复调用的函数方法.在很多Javascript框架里你都能看到有反复调用的函数.当在使用这些框架时,我们必须小心翼翼的尽量 ...

  9. import,reload,__import__在python中的区别

    import,reload,__import__在python中的区别 http://blog.csdn.net/five3/article/details/7762870 import作用:导入/引 ...

  10. 漫话C++0x(五)—- thread, mutex, condition_variable

    熟悉C++98的朋友,应该都知道,在C++98中没有thread, mutex, condition_variable这些与concurrency相关的特性支持,如果需要写多线程相关程序,都要借助于不 ...