面对最小割之类的题目,完全木想法。。。

枚举+最大流。。复杂度很大了。。。居然很快的就过了。。

 /*
ID: cuizhe
LANG: C++
TASK: telecow
*/
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
#define INF 0xffffff
struct node
{
int u,v,w,next;
} edge[];
int first[],flag[],dis[];
int qu[],qv[];
int t,n,m,ans;
int sv,ev;
void CL()
{
t = ;
memset(first,-,sizeof(first));
}
void add(int u,int v,int w)
{
edge[t].u = u;
edge[t].v = v;
edge[t].w = w;
edge[t].next = first[u];
first[u] = t ++; edge[t].u = v;
edge[t].v = u;
edge[t].w = ;
edge[t].next = first[v];
first[v] = t ++;
}
void build()
{
int i;
CL();
for(i = ; i < m; i ++)
{
add(qu[i]+n,qv[i],INF);
add(qv[i]+n,qu[i],INF);
}
for(i = ; i <= n; i ++)
{
if(!flag[i])
{
if(i == sv)
add(i,i+n,INF);
else if(i == ev)
add(i,i+n,INF);
else
add(i,i+n,);
}
}
}
int bfs()
{
int u,v,i;
memset(dis,-,sizeof(dis));
queue<int> que;
que.push(sv);
dis[sv] = ;
while(!que.empty())
{
u = que.front();
que.pop();
for(i = first[u]; i != -; i = edge[i].next)
{
v = edge[i].v;
if(edge[i].w > &&dis[v] < )
{
dis[v] = dis[u] + ;
que.push(v);
}
}
}
if(dis[ev] > ) return ;
else return ;
}
int dfs(int u,int step)
{
int i,a = ,v;
if (u == ev) return step;
for (i = first[u]; i != -; i = edge[i].next)
{
v = edge[i].v;
if (edge[i].w > && dis[v] == dis[u]+&&(a = dfs(v,min(step,edge[i].w))))
{
edge[i].w -= a;
edge[i^].w += a;
return a;
}
}
return ;
}
int dinic()
{
int res,ans = ;
while(bfs())
{
while(res = dfs(sv,INF))
ans+= res ;
}
return ans;
}
void path(int x)
{
int i;
if(x == ) return ;
for(i = ; i <= n; i ++)
{
if(flag[i] == ) continue;
if(i == sv||i == ev) continue;
flag[i] = ;
build();
if(dinic() == x-)
{
if(x == ans)
printf("%d",i);
else
printf(" %d",i);
path(x-);
return ;
}
else
flag[i] = ;
}
return ;
}
int main()
{
int i;
freopen("telecow.in","r",stdin);
freopen("telecow.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&sv,&ev);
for(i = ; i < m; i ++)
{
scanf("%d%d",&qu[i],&qv[i]);
}
build();
printf("%d\n",ans = dinic());
path(ans);
printf("\n");
return ;
}

USACO 5.4 Telecowmunication(最大流+枚举)的更多相关文章

  1. loj 1154(最大流+枚举汇点)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26868 思路:拆点,容量为最多能跳的步数,然后设立一个超级源点,源 ...

  2. hust-1024-dance party(最大流--枚举,可行流判断)

    题意: 舞会上,男孩和女孩配对,求最大完全匹配个数,要求每个人最多与k个不喜欢的人配对,且每次都和不同的人配对. 分析: 将一个点拆成3个点. b,  b1, b2.   从1到n枚举ans,  判可 ...

  3. POJ-3189-Steady Cow Assignment(最大流+枚举)

    题意 此题题意不太好懂.现有n头牛和b个牛棚,每个牛棚可以养的牛的数目都有一个限制c[i],表示该牛棚最多只能关c[i]头牛,每头牛对每一个牛棚都有一个喜爱值,用1到b来表示,现在要安排这些牛,使得牛 ...

  4. POJ3228 并查集或二分最大流枚举答案

    忘记写题意了.这题题意:给出每个地点的金矿与金库的数量,再给出边的长度.求取最大可通过边长的最小权值使每个金矿都能运输到金库里. 这题和之前做的两道二分枚举最大流答案的问法很相识,但是这里用最大流速度 ...

  5. BZOJ1189:[HNOI2007]紧急疏散EVACUATE(最大流,枚举)

    Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是 ...

  6. POJ 2699 The Maximum Number of Strong Kings (最大流+枚举)

    http://poj.org/problem?id=2699 题意: 一场联赛可以表示成一个完全图,点表示参赛选手,任意两点u, v之间有且仅有一条有向边(u, v)或( v, u),表示u打败v或v ...

  7. POJ - 2699 The Maximum Number of Strong Kings (最大流+枚举)

    题意:有n(n<=10)个选手,两两之间打比赛,共有n*(n-1)/2场比赛,赢一场得1分.给出每个人最后的得分.求有多少个定义如下的strong king:赢了所有得分比自己高的人或本身就是分 ...

  8. poj 2699 The Maximum Number of Strong Kings【最大流+枚举】

    因为n很小所以从大到小枚举答案.(从小到大先排个序,因为显然胜利场次越多越容易成为strong king.然后对于每个枚举出来的ans建图.点分别表示人和比赛.s向所有人连接流量为胜利场次的边,所有比 ...

  9. USACO 玛丽卡(最短路+枚举)

    USACO 玛丽卡 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市 ...

随机推荐

  1. Android创建桌面快捷图标

    <!-- 添加快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL ...

  2. mysql如何用order by 自定义排序

    mysql如何用order by 自定义排序 id name roleId aaa bbb ccc ddd eee ,MySQL可以通过field()函数自定义排序,格式:field(value,st ...

  3. jQuery属性,方法操作

     addClass() 向匹配的元素添加指定的类名.attr() 设置或返回匹配元素的属性和值.hasClass() 检查匹配的元素是否拥有指定的类.html() 设置或返回匹配的元素集合中的 HTM ...

  4. iOS viewDidAppear 和 viewWillAppear

    今天发现,如果用navigation push一个controller,那么从动画开始就调用viewwillappear,动画全部停止才会调用viewDidAppear,不知道是否正确,先做记录,带验 ...

  5. hdu 1160 FatMouse's Speed 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题目意思:给出一堆老鼠,假设有 n 只(输入n条信息后Ctrl+Z).每只老鼠有对应的weigh ...

  6. php的socket通信(二)

    案例一:代码详解 // 设置一些基本的变量$host = "192.168.1.99";$port = 1234;// 设置超时时间set_time_limit(0);// 创建一 ...

  7. HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002

    题目:传送门. 题意:题目说的是求期望,其实翻译过来意思就是:一个长度为 n 的数列(n>=3),按顺序删除其中每一个数,每次删除都是建立在最原始数列的基础上进行的,算出每次操作后得到的新数列的 ...

  8. Express4--说明

    express4.*;(1) var app = express(): 生成一个express实例 app. (2) app.set('views', path.join(__dirname, 'vi ...

  9. weblogic 安装和部署项目(原创)

    1.下载weblogic(含破解文件,土豪请支持正版,谢谢!) 2.安装如下图: 3.新建domain 4.打开weblogic Console 5.开始部署项目 6.部署成功

  10. 设置IIS会话过期时间

    打开默认网站----双击ASP--展开会话属性---更改超时时间-