一种网络流建图的思路吧,改天最好整理一波网络流建图思路

 #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]危桥 网络流的更多相关文章

  1. Luogu3163 [CQOI2014]危桥 ---- 网络流 及 一个细节的解释

    Luogu3163 [CQOI2014]危桥 题意 有$n$个点和$m$条边,有些边可以无限次数的走,有些边这辈子只能走两次,给定两个起点和终点$a_1 --> a_2$(起点 --> 终 ...

  2. BZOJ3504 CQOI2014危桥(最大流)

    如果只有一个人的话很容易想到最大流,正常桥连限流inf双向边,危桥连限流2双向边即可.现在有两个人,容易想到给两起点建超源两汇点建超汇,但这样没法保证两个人各自到达自己要去的目的地.于是再超源连一个人 ...

  3. bzoj3504: [Cqoi2014]危桥

    题意:给出一个图,有的边可以无限走,有的只能走两次(从一头到另一头为一次),给定两个起点以及对应的终点以及对应要走几个来回,求判断是否能完成. 先来一个NAIVE的建图:直接限制边建为容量1,无限制为 ...

  4. bzoj3504: [Cqoi2014]危桥--最大流

    题目大意:给张无向图,有两个人a,b分别从各自的起点走向各自的终点,走A,B个来回,图里有些边只能走两次,求问是否能满足a,b的需求 按照题目给的表建图 S连a1,b1 a2,b2连T 跑最大流看是否 ...

  5. [BZOJ3504][CQOI2014]危桥(最大流)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3504 分析:很容易想到最大流,但如果S-a1,S-b1,a2-T,b2-T这样跑S-T最大流判 ...

  6. 【BZOJ3504】危桥(网络流)

    [BZOJ3504]危桥(网络流) 题面 BZOJ 洛谷 Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的, ...

  7. BZOJ 3504: [Cqoi2014]危桥 [最大流]

    3504: [Cqoi2014]危桥 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1407  Solved: 703[Submit][Status] ...

  8. 3504: [Cqoi2014]危桥

    3504: [Cqoi2014]危桥 链接 分析: 首先往返的可以转化为全是“往”,那么只要将容量除以2即可. 然后S向a1连边容量为an(除以2之前为2*an),S向a2连边容量为an,b1,b2向 ...

  9. bzoj千题计划137:bzoj [CQOI2014]危桥

    http://www.lydsy.com/JudgeOnline/problem.php?id=3504 往返n遍,即单向2*n遍 危桥流量为2,普通桥流量为inf 原图跑一遍最大流 交换b1,b2再 ...

随机推荐

  1. 分享UI设计模型

    UI设计模型是可重用的界面设计解决方案,可以让开发人员少走弯路,节约不少开发时间.下面慧都小编跟大家分享6个很有用的UI设计模型资源,希望对你有用: 1.UI Patterns 由一个丹麦人开发的UI ...

  2. ReviewBoard安装和配置说明

    眼下部门还没有採用Pair Programming那种时时刻刻都在review代码的工作方式,代码Review多採用走查方式.即代码写完后召开一个Code Review的Meeting,集中时间和经验 ...

  3. Mysql基础之字符集与乱码

    原文:Mysql基础之字符集与乱码 Mysql的字符集设置非常灵活 可以设置服务器默认字符集 数据库默认字符集 表默认字符集 列字符集 如果某一个级别没有指定字符集,则继承上一级. 以表声明utf8为 ...

  4. 《C语言 学生成绩管理系统》

    /* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名: 学生成绩 ...

  5. Node填坑教程——常用库

    作为函数式编程来说,流程控制和函数库是必不可少的(应该吧). 下面我们介绍两个常用的库. lodash:完整的api请参阅,https://lodash.com/docs.这里我们只演示几个简单的例子 ...

  6. MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 二

    本次改动的主要内容是实现MongoDB.Repository对MongoDBRef的支持. MongoDB对一对一,一对多,多对多关系的维护,官方推荐文档嵌入方式,反映到模型的设计如下: public ...

  7. Lazy Scheduler

    Lazy Scheduler:我的轻量级任务调度框架   一.背景 工作中经常涉及任务调度,一直都是采用while(true) => if hitted DO => Thread.Slee ...

  8. [转]UIWebView的Javascript运行时对象

    An alternative, that may get you rejected from the app store, is to use WebScriptObject. These APIs ...

  9. 红黑树LLRB

    LLRB——红黑树的现代实现 一.本文内容 以一种简明易懂的方式介绍红黑树背后的逻辑实现2-3-4树,以及红黑树的插入.删除操作,重点在2-3-4树与红黑树的对应关系上,并理清红黑树相关操作的来龙去脉 ...

  10. textarea定位光标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...