# Usaco 5.4.5

/*
ID: volz.kz.g
PROB: telecow
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#define INF 0x7FFFFFFF
using namespace std;
ifstream fin("telecow.in");
ofstream fout("telecow.out");

int n,m,s,t,ans;
struct edge_node{
int v,c,next;
}e[6000];
int edge_num;
int d[6000],c[6000],v[6000];
int g[501][501];
bool cut[501];

void init(){
memset(e,0,sizeof(e));
memset(v,0,sizeof(v));
edge_num=0;
}
void insert(int a,int b,int c){
//fout << a << " " << b << " " << c << endl;
++edge_num;
e[edge_num].v=b;e[edge_num].c=c;e[edge_num].next=v[a];v[a]=edge_num;
++edge_num;
e[edge_num].v=a;e[edge_num].c=0;e[edge_num].next=v[b];v[b]=edge_num;
}
void makegraph(){
init();
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
if (g[i][j]){
insert(i+n,j,INF);
insert(j+n,i,INF);
}
for (int i=1;i<=n;++i)
if (cut[i])
insert(i,i+n,1);
else
insert(i,i+n,0);
}
int opp(int x){
return (x%2==1)?x+1:x-1;
}
int maxflow(int x,int lim){
int ret,min_num,max_flow,i,j;
if (x==t) return lim;
min_num=2*n;max_flow=0;
j=v[x];
while (j!=0){
if (e[j].c>0){
if (d[e[j].v]+1==d[x]){
ret=min(lim,e[j].c);
ret=maxflow(e[j].v,ret);
e[j].c-=ret;e[opp(j)].c+=ret;
lim-=ret;max_flow+=ret;
if (lim==0 || d[s]>=2*n) return max_flow;
}
min_num=min(min_num,d[e[j].v]+1);
}
j=e[j].next;
}
if (min_num==d[x]) return max_flow;
--c[d[x]];
if (c[d[x]]==0) d[s]=2*n;
d[x]=min_num;c[d[x]]++;
return max_flow;
}
int main(){
memset(g,false,sizeof(g));
memset(cut,true,sizeof(cut));
fin >> n >> m >> s >>t;
for (int i=1;i<=m;++i){
int a,b;fin >> a >> b;
g[a][b]=true;g[b][a]=true;
}
makegraph();
c[0]=2*n;
while (d[s]<2*n) ans+=maxflow(s+n,INF);
fout << ans << endl;//输出点连通度
int print[201],print_num=0;
for (int i=1;i<=n;++i){
if (i!=s && i!=t){
cut[i]=false;
makegraph();memset(c,0,sizeof(c));memset(d,0,sizeof(d));
int tmp=0;c[0]=2*n;
while (d[s]<2*n) tmp+=maxflow(s+n,INF);
if (tmp==ans-1){
ans--;
print[++print_num]=i;
}
else{
cut[i]=true;
}
if (!ans) break;
}
}
for (int i=1;i<print_num;++i) fout << print[i] << " ";fout << print[print_num] << endl;
return 0;
}

• 本文已收录于以下专栏：

## usaco 5.4.5 Telecowmunication

• dyhu083
• 2015年01月31日 16:52
• 213

## [usaco]5.4.5 Big Barn题解

5   Big Barn A Special Treat Farmer John wants to place a big square barn on his square farm. He...
• sjtuyunlei
• 2011年10月08日 10:19
• 269

## 离线安装CDH5.4.5 on CentOS6.5

• a512982545
• 2015年09月04日 15:30
• 801

## USACO 提交测试

/** PROG:ride LANG:C++ ID:zpc19951 **/ #include #include #include #include #include using ...
• h1021456873
• 2016年10月26日 19:18
• 280

## USACO入门以及提交格式

• niskoy
• 2015年12月14日 21:52
• 1764

## 竞赛题目讲解 - 【USACO TRAINING】子集的和

【USACO TRAINING】子集的和 对于从1到N (1
• C20192419MYS
• 2017年06月11日 22:47
• 432

## USACO gift1

/* ID:kevin_s1 PROG:gift1 LANG:C++ */ #include #include #include using namespace std; str...
• Kevin_Samuel
• 2014年05月11日 13:02
• 688

## USACO月赛原题及数据

• creativewang
• 2012年10月29日 22:25
• 9451

## USACO历年比赛的数据和解题报告

http://ace.delos.com/MAR07 表示07年三月的比赛，把最后的部分改成”月份+年份“就可以了...
• alongela
• 2012年12月01日 15:43
• 1876

## USACO月赛数据

• zhb1997
• 2014年06月06日 22:55
• 474

举报原因： 您举报文章：Usaco 5.4.5 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)