奶牛通讯 usaco 网络流
这道题很有意思,原题是只需输出最小割集大小,现在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 网络流的更多相关文章
- 洛谷P2402 奶牛隐藏(网络流,二分答案,Floyd)
洛谷题目传送门 了解网络流和dinic算法请点这里(感谢SYCstudio) 题目 题目背景 这本是一个非常简单的问题,然而奶牛们由于下雨已经非常混乱,无法完成这一计算,于是这个任务就交给了你.(奶牛 ...
- bzoj1779 [Usaco2010 Hol]Cowwar 奶牛战争(网络流)
1779: [Usaco2010 Hol]Cowwar 奶牛战争 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 302 Solved: 131[Sub ...
- P2402 奶牛隐藏 二分+网络流
floyd搞出两点间最短距离 二分判答案 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; ty ...
- CODEVS 3279 奶牛的健美操
3279 奶牛健美操 USACO 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description Farmer John为了保持奶牛们的 ...
- 题解 【USACO 4.2.1】草地排水
[USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...
- poj2112 Optimal Milking --- 最大流量,二分法
nx一个挤奶器,ny奶牛,每个挤奶罐为最m奶牛使用. 现在给nx+ny在矩阵之间的距离.要求使所有奶牛挤奶到挤奶正在旅程,最小的个体奶牛步行距离的最大值. 始感觉这个类似二分图匹配,不同之处在于挤奶器 ...
- 光纤通信(codevs 1955)
题目描述 Description 农民John 想要用光纤连通他的N (1 <= N <= 1,000)个牲口棚(编号1..N).但是,牲口棚位于一个大池塘边,他仅可以连通相邻的牲口棚.J ...
- COGS130. [USACO Mar08] 游荡的奶牛[DP]
130. [USACO Mar08] 游荡的奶牛 ★☆ 输入文件:ctravel.in 输出文件:ctravel.out 简单对比时间限制:1 s 内存限制:128 MB 奶牛们在被划 ...
- usaco 地震 && 奶牛观光
Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...
随机推荐
- mysql存储引擎(mysql学习六)
存储引擎 现在只有InnoDB支持外键 上接着学习笔记五 class表中有外键,所以不能修改存储引擎 表类型 默认的服务器表类型,通过my.ini可以配置 Default-storage-e ...
- linux中文显示乱码的解决办法
linux中文显示乱码的解决办法 linux中文显示乱码是一件让人很头疼的事情. linux中文显示乱码的解决办法:[root@kk]#vi /etc/sysconfig/i18n将文件中的内容修改为 ...
- php生成随机字符串和验证码的类
网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个. 索性自己搞一个吧. 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_ch ...
- shopnc二次开发(二)
一般来说二次开发,多数就是修改界面和增加功能这两个需求 先说修改界面 mvc 架构的程序,在界面这里,基本就是调用数据. 常见的界面数据构架有三种 1.是业务端或者是控制端数据驱动界面,基本上是后台输 ...
- android在程序中打开另一个程序
在开发android应用的时候,在一些情况下要有前置条件,比如这边所说的要启动时要确保别的应用程序服务已经打开 或者在操作中启动别的应用等. 先来一段google上的代码: 1. 已知包名和类名的情 ...
- USB协议分析
一.USB设备描述结构 1.逻辑组织结构 在USB设备的逻辑组织中,包含设备.配置.接口和端点4个层次.设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点. 每个USB设备都可以包 ...
- sqlalchemy - day2
Relationship Configuration 一.one to many 直接上代码 from sqlalchemy import create_engine engine = create ...
- 1.python的第一步
学习python也有一段时间了,自认为基本算是入门了,想要写一些博客进行知识的汇总的时候.却发现不知道该从何说起了,因为python这门语言在语法上其实并不难,关键在于如何建立程序员的思维方式,而对于 ...
- Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)
Java 逻辑运算符.位运算符.移位操作符 总结 作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...
- hdu 5443 The Water Problem
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Description In Land waterless, ...