bzoj3504: [Cqoi2014]危桥 网络流
一种网络流建图的思路吧,改天最好整理一波网络流建图思路
#include <bits/stdc++.h>
using namespace std;
int n,h,t,a1,a2,an,b1,b2,bn,flow,now;char ch;
int dis[],l[],d[][];char c[][];
char getch()
{
for(ch=getchar();ch!='O' && ch!='N' && ch!='X';ch=getchar());
return ch;
}
bool bfs()
{
for(int i=;i<=n+;i++)
dis[i]=;
for(h=,t=,l[]=,dis[]=;h<=t;h++)
for(int i=;i<=n+;i++)
if(d[l[h]][i] && !dis[i])
l[++t]=i,dis[i]=dis[l[h]]+;
return dis[n+];
}
int dfs(int now,int maxflow)
{
if(now==n+) return maxflow;
int flow=;
for(int i=;i<=n+;i++)
if(dis[i]==dis[now]+ && d[now][i])
{
int thi=dfs(i,min(maxflow,d[now][i]));
d[now][i]-=thi;d[i][now]+=thi;
maxflow-=thi;flow+=thi;
if(maxflow==) return flow;
}
if(flow==)
dis[now]=-;
return flow;
}
void INIT()
{
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
switch(c[i][j])
{
case'O':d[j][i]=d[i][j]=;break;
case'N':d[j][i]=d[i][j]=flow;break;
case'X':d[j][i]=d[i][j]=;break;
}
for(int i=;i<=n+;i++)
d[][i]=d[i][]=d[i][n+]=d[n+][i]=;
d[a1][]=d[][a1]=an<<;d[b1][]=d[][b1]=bn<<;
d[a2][n+]=d[n+][a2]=an<<;d[b2][n+]=d[n+][b2]=bn<<;
now=;
}
int main()
{
while(~scanf("%d%d%d%d%d%d%d",&n,&a1,&a2,&an,&b1,&b2,&bn))
{
a1++;a2++;b1++;b2++;
flow=an+bn<<;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
c[i][j]=getch();
INIT();
while(now<flow && bfs()) now=now+dfs(,flow);
if(now<flow)
{
puts("No");
continue;
}
swap(b1,b2);
INIT();
while(now<flow && bfs()) now=now+dfs(,flow);
if(now<flow)
puts("No");
else
puts("Yes");
}
return ;
}
bzoj3504: [Cqoi2014]危桥 网络流的更多相关文章
- Luogu3163 [CQOI2014]危桥 ---- 网络流 及 一个细节的解释
Luogu3163 [CQOI2014]危桥 题意 有$n$个点和$m$条边,有些边可以无限次数的走,有些边这辈子只能走两次,给定两个起点和终点$a_1 --> a_2$(起点 --> 终 ...
- BZOJ3504 CQOI2014危桥(最大流)
如果只有一个人的话很容易想到最大流,正常桥连限流inf双向边,危桥连限流2双向边即可.现在有两个人,容易想到给两起点建超源两汇点建超汇,但这样没法保证两个人各自到达自己要去的目的地.于是再超源连一个人 ...
- bzoj3504: [Cqoi2014]危桥
题意:给出一个图,有的边可以无限走,有的只能走两次(从一头到另一头为一次),给定两个起点以及对应的终点以及对应要走几个来回,求判断是否能完成. 先来一个NAIVE的建图:直接限制边建为容量1,无限制为 ...
- bzoj3504: [Cqoi2014]危桥--最大流
题目大意:给张无向图,有两个人a,b分别从各自的起点走向各自的终点,走A,B个来回,图里有些边只能走两次,求问是否能满足a,b的需求 按照题目给的表建图 S连a1,b1 a2,b2连T 跑最大流看是否 ...
- [BZOJ3504][CQOI2014]危桥(最大流)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3504 分析:很容易想到最大流,但如果S-a1,S-b1,a2-T,b2-T这样跑S-T最大流判 ...
- 【BZOJ3504】危桥(网络流)
[BZOJ3504]危桥(网络流) 题面 BZOJ 洛谷 Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的, ...
- BZOJ 3504: [Cqoi2014]危桥 [最大流]
3504: [Cqoi2014]危桥 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1407 Solved: 703[Submit][Status] ...
- 3504: [Cqoi2014]危桥
3504: [Cqoi2014]危桥 链接 分析: 首先往返的可以转化为全是“往”,那么只要将容量除以2即可. 然后S向a1连边容量为an(除以2之前为2*an),S向a2连边容量为an,b1,b2向 ...
- bzoj千题计划137:bzoj [CQOI2014]危桥
http://www.lydsy.com/JudgeOnline/problem.php?id=3504 往返n遍,即单向2*n遍 危桥流量为2,普通桥流量为inf 原图跑一遍最大流 交换b1,b2再 ...
随机推荐
- JQuery在Ajax的Post提交中国乱码的解决方案
介绍: 在JQuery的Ajax POST要求,一个要求.中国的背景之中,乱码,如何解决呢? 问题简介: var regid = $('#oregion').combobox('getValue'); ...
- Spring MVC 的 研发之路
翻译器:intellij idea 一个.创建spring mvcproject 一个. 二. 三. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcX ...
- Effective C++ Item 46 当需要投你非成员函数定义模板
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当我们编写一个 class template, 而它所提供之"与此 temp ...
- C#中文本模板(.tt)
关于C#中文本模板(.tt)的简单应用 这两天做项目突遇 .tt文件,之前没有接触过,so查询学习做笔记,帮助记忆和后来者. 在项目添加中点击选择文本模板 下面贴出代码,做了简单的注释 1 2 3 4 ...
- ASP.NET页面生命周期和asp.net应用程序生命周期
作为一个asp.net程序员,不了解ASP.NET页面生命周期和asp.net应用程序生命周期是绝对不行的,那永远只能是菜鸟级别.我很早就学过,可是没次还是得去翻,一些事件还是记不住,还是记在自己的b ...
- MVC 过滤器1
ASP.NET MVC 过滤器(一) 前言 前面的篇幅中,了解到了控制器的生成的过程以及在生成的过程中的各种注入点,按照常理来说篇幅应该到了讲解控制器内部的执行过程以及模型绑定.验证这些知识了.但是呢 ...
- 验证编辑方法(Edit method)和编辑视图(Edit view)
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是 ...
- vstemplate关键点纪要
创建Visual studio项目模板 vstemplate关键点纪要 经过多次的实验,终于完美生成一个.VSIX的项目模板安装包,其中遇到不少问题与挫折,久经google/baidu/自行摸索.终于 ...
- [原]逆向iOS SDK -- “添加本地通知”的流程分析
观点: 代码面前没有秘密 添加通知的 Demo 代码 - (void)scheduleOneLocalNotification { [[UIApplication sharedApplication] ...
- Orchard网上商店模块
从头开始编写一个Orchard网上商店模块(1) - 介绍 原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-w ...