这道题很有意思,原题是只需输出最小割集大小,现在oj上改成了输出字典序最小的割集;

题解:可以考虑从小到大删边,若删掉这条边后,最小割变小,保持不变,记录此时的最小割大小;

若最小割不变,恢复这条边;

这样做的原因是什么呢?从小到大可以保证字典序的要求,删完边后若最小割减小,这条边一定在最小割上,删掉它不再恢复可以保证不在把这条通路上的其他边也收进来;

网络流博大精深,还是需要好好体会的;

但在此之前,应该先会敲代码;

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<ctime>
#include<algorithm>
using namespace std;
const int maxn=;
const int inf=;
int S,T,n,m;
struct node{
int y,next,re,flow;
}e[maxn<<],e2[maxn<<];
int linkk[maxn],len=;
void insert(int x,int y,int flow){
e[++len].y=y;
e[len].next=linkk[x];
linkk[x]=len;
e[len].flow=flow;
e[len].re=len+;
e[++len].y=x;
e[len].next=linkk[y];
linkk[y]=len;
e[len].flow=;
e[len].re=len-;
}
void init(){
scanf("%d%d%d%d",&n,&m,&S,&T);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
if(x==S){insert(S,y,inf);insert(y+n,S,inf);}
else if(y==S){insert(S,x,inf);insert(x+n,S,inf);}
else if(x==T){insert(T,y,inf);insert(y+n,T,inf);}
else if(y==T){insert(x+n,T,inf);insert(T,x,inf);}
else {insert(x+n,y,inf);insert(y+n,x,inf);}
}
for(int i=;i<=n;i++)if(S!=i&&T!=i)insert(i,i+n,);
}
bool flag=;
int flow=inf,vis[maxn],ans=,f[maxn];
void dfs(int x,int a){
if(f[x])return;
vis[x]=;
if(x==T){
flag=;flow=a;ans+=flow;return;
}
for(int i=linkk[x];i;i=e[i].next){
if(vis[e[i].y]||(!e[i].flow))continue;
dfs(e[i].y,min(a,e[i].flow));
if(flag){
e[i].flow-=flow;e[e[i].re].flow+=flow;return;
}
}
}
void work(){
ans=;flag=;
while(flag){
flag=;
memset(vis,,sizeof(vis));
dfs(S,inf);
}
}
int main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
init();
memcpy(e2,e,sizeof(e));
work();
cout<<ans<<endl;
int q[maxn],sum=ans,k=ans,tail=;
for(int i=;i<=n;i++){
if(i==S||i==T)continue;
memcpy(e,e2,sizeof(e));
f[i]=;
work();
if(ans<sum)q[++tail]=i,sum=ans;
else f[i]=;
}
sort(q+,q+tail+);
for(int i=;i<=k;i++)printf("%d ",q[i]);
}

奶牛通讯 usaco 网络流的更多相关文章

  1. 洛谷P2402 奶牛隐藏(网络流,二分答案,Floyd)

    洛谷题目传送门 了解网络流和dinic算法请点这里(感谢SYCstudio) 题目 题目背景 这本是一个非常简单的问题,然而奶牛们由于下雨已经非常混乱,无法完成这一计算,于是这个任务就交给了你.(奶牛 ...

  2. bzoj1779 [Usaco2010 Hol]Cowwar 奶牛战争(网络流)

    1779: [Usaco2010 Hol]Cowwar 奶牛战争 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 302  Solved: 131[Sub ...

  3. P2402 奶牛隐藏 二分+网络流

    floyd搞出两点间最短距离 二分判答案 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; ty ...

  4. CODEVS 3279 奶牛的健美操

    3279 奶牛健美操 USACO  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description Farmer John为了保持奶牛们的 ...

  5. 题解 【USACO 4.2.1】草地排水

    [USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...

  6. poj2112 Optimal Milking --- 最大流量,二分法

    nx一个挤奶器,ny奶牛,每个挤奶罐为最m奶牛使用. 现在给nx+ny在矩阵之间的距离.要求使所有奶牛挤奶到挤奶正在旅程,最小的个体奶牛步行距离的最大值. 始感觉这个类似二分图匹配,不同之处在于挤奶器 ...

  7. 光纤通信(codevs 1955)

    题目描述 Description 农民John 想要用光纤连通他的N (1 <= N <= 1,000)个牲口棚(编号1..N).但是,牲口棚位于一个大池塘边,他仅可以连通相邻的牲口棚.J ...

  8. COGS130. [USACO Mar08] 游荡的奶牛[DP]

    130. [USACO Mar08] 游荡的奶牛 ★☆   输入文件:ctravel.in   输出文件:ctravel.out   简单对比时间限制:1 s   内存限制:128 MB 奶牛们在被划 ...

  9. usaco 地震 && 奶牛观光

    Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...

随机推荐

  1. mac 下 svn ignore 操作

    如何在svn中设备忽略的文件或者文件夹 1.如果你还没有对你的文件夹进行版本控制,则可以直接图形操作上进行ignore,或者在命令中运行 svn propedit svn:ignore 文件夹名 . ...

  2. php变量那些事:学习过程中遇到的关于php变量的有趣的问题(不断发现不断更新)

    不断发现……,不断更新……,不断寻找答案……例子的测试环境:php5.3,win7,64位Num1:<?$a=array(1,2,3,4,5,6); $b=$a;$m=memory_get_us ...

  3. php手册学习

    整型:int   转换为整型:intval(str)  32位最大值64位最大值 不存在整除语法:应用round();四舍五入.integer去除小数. $a = 1234; //十进制数 $a = ...

  4. sliding windows (poj 2823) 题解

    [问题描述] 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表: [样例输入] 8 3 1 3 -1 -3 5 3 6 7 [样例输 ...

  5. WCF 内存入口检查失败

    WCF 内存入口检查失败 Memory gates checking failed   异常信息:内存入口检查失败,因为可用内存(xxx 字节)少于总内存的 xx%.因此,该服务不可用于传入的请求.若 ...

  6. [terry笔记]Oracle10g/11g安装-redhat5.5

    操作系统准备工作 其实真正的进入图形界面安装是简单的,只是前期的配置比较繁琐,如版本.空间.位置.软件包.用户.环境变量.内核参数,这里主要讨论前期配置. 10g与11g的单实例安装基本一样,主要区别 ...

  7. 在openSUSE13.2上gem install rails -v 4.1成功,但是之后不存在rails命令解决

    解决方案为,不要用sudo gem install就好了,卧槽

  8. 11G ORACLE RAC DBCA 无法识别asm磁盘组

    ASM磁盘无法识别几种现象: 1) gi家目录或者其子目录权限错误 2)asm磁盘的权限错误 3)asm实例未启动或者asm磁盘组没有mount上 4)asm磁盘组资源没有在线 5)oracle用户的 ...

  9. 关于EF分页查询报错(Count must have a non-negative value.)的解决方案

    具体的异常信息如下,一开始没有写日志只看到错误信息:Count must have a non-negative value.,从表面意思可以看出来是Count值出现了负数,所以报错,查了半天的原因也 ...

  10. poj 2485 Highways

    题目连接 http://poj.org/problem?id=2485 Highways Description The island nation of Flatopia is perfectly ...