P2944 [USACO09MAR]地震损失2Earthquake Damage 2(网络流)
P2944 [USACO09MAR]地震损失2Earthquake Damage 2
$P$个点,$C$条双向边。求最少删去几个点使$N$个给定的点与点$1$分开。
显然的最小割。
将点$i$套路地拆成$i_1,i_2$,割点转化成割边
对于点$1$:$link(S,1_1,inf),link(1_1,1_2,inf)$。保证不被割掉,且分到$S$割中
对于每个给定点$k$:$link(k_2,T,inf),link(k_1,k_2,inf)$。保证不被割掉,且分到$T$割中
对于每条双向边$(u,v)$:$link(u_1,v_2,inf),link(u_2,v_1,inf)$。保证不被割掉
对于剩余点:$link(i_1,i_2,1)$。可能被割掉
建好图跑遍最大流(最小割)就好辣
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<queue>
- using namespace std;
- #define N 10005
- #define M 100005
- const int inf=2e9;
- int n,S,T,d[N],cur[N];
- queue <int> h; bool vis[N],e[N];
- int cnt=,hd[N],nxt[M],ed[N],poi[M],val[M];
- inline void adde(int x,int y,int v){
- nxt[ed[x]]=++cnt, hd[x]=hd[x]?hd[x]:cnt,
- ed[x]=cnt, poi[cnt]=y, val[cnt]=v;
- }
- inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
- bool bfs(){
- for(int i=;i<=T;++i) vis[i]=,cur[i]=hd[i];
- h.push(S); vis[S]=;
- while(!h.empty()){
- int x=h.front(); h.pop();
- for(int i=hd[x];i;i=nxt[i]){
- int to=poi[i];
- if(!vis[to]&&val[i]>)
- vis[to]=,d[to]=d[x]+,h.push(to);
- }
- }return vis[T];
- }
- int dfs(int x,int a){
- if(x==T||a==) return a;
- int F=,f;
- for(int &i=cur[x];i;i=nxt[i]){
- int to=poi[i];
- if(d[to]==d[x]+&&(f=dfs(to,min(a,val[i])))>)
- a-=f,F+=f,val[i]-=f,val[i^]+=f;
- if(!a) break;
- }return F;
- }
- int dinic(){int re=; while(bfs())re+=dfs(S,inf); return re;}
- int main(){
- int m,c,q1,q2;
- scanf("%d%d%d",&n,&m,&c);
- S=n*+; T=S+;
- link(S,,inf); link(,+n,inf);
- while(m--){
- scanf("%d%d",&q1,&q2);
- link(q1+n,q2,inf);
- link(q2+n,q1,inf);
- }
- while(c--){
- scanf("%d",&q1); e[q1]=;
- link(q1,q1+n,inf);
- link(q1+n,T,inf);
- }
- for(int i=;i<=n;++i)
- if(!e[i]) link(i,i+n,);
- printf("%d",dinic());
- return ;
- }
P2944 [USACO09MAR]地震损失2Earthquake Damage 2(网络流)的更多相关文章
- p2944 [USACO09MAR]地震损失2Earthquake Damage 2
传送门 分析 我们让s到1,关键点到t分别连流量为inf的边 于是我们可以考虑跑s到t的最小割 于是我们将所有点拆为两个点,关键点和1的两个点之间连inf,其余点连1 将原图的边也连上,流量为inf ...
- [USACO09MAR]地震损失2Earthquake Damage 2
地震破坏 时间限制: 1 Sec 内存限制: 128 MB 题目描述 威斯康星发生了一场地震!约翰的牧场遭到了打击,有一些牛棚变成了废墟,如果一间牛棚遭到 了破坏,那么所有和它相连的道路都不能使用了 ...
- 洛谷2944 [USACO09MAR]地震损失2Earthquake Damage 2
https://www.luogu.org/problem/show?pid=2944 题目描述 Wisconsin has had an earthquake that has struck Far ...
- 【P2944】地震损失(最大流,洛谷)
绝对难度虚高的一题 看到题目,至少损坏几个房子,开始考虑最小割,建的是双向边,所以拆点,边权除了自己与自己的之外都连inf.然后把所有求救的点都连到超级源上,跑一遍最大流就可以了. #include& ...
- 【BZOJ1585】【Luogu2944】地震损失2(网络流)
[BZOJ1585][Luogu2944]地震损失2(网络流) 题面 题目描述 Wisconsin has had an earthquake that has struck Farmer John' ...
- 【bzoj1585】[Usaco2009 Mar]Earthquake Damage 2 地震伤害 网络流最小割
题目描述 Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着两个牧场Ai和Bi,注意可能有很多条道路连接着相同的Ai和Bi,并且Ai有可能和Bi相等.Farmer J ...
- BZOJ 1585: Earthquake Damage 2 地震伤害 网络流 + 最小割
Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着两个牧场Ai和Bi,注意可能有很多条道路连接着相同的Ai和Bi,并且Ai有可能和Bi相等.F ...
- 1574: [Usaco2009 Jan]地震损坏Damage
1574: [Usaco2009 Jan]地震损坏Damage Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 425 Solved: 232[Subm ...
- bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害
1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着 ...
随机推荐
- HTTP post get request 时遇到特殊字符 ! @ # $ % ^ & * ( )
HTTP post get request 时遇到特殊字符 ! @ # $ % ^ & * ( ) 使用对应的编码替代 例如: curl ftp://username:pass@word@ex ...
- ps:点阵格式图像
我们所看到的图像,究竟是如何构成的呢?这就需要涉及到图像类型的概念. 电脑中的图像类型分为两大类,一类称为点阵图,一类称为矢量图. 点阵图顾名思义就是由点构成的,如同用马赛克去拼贴图案一样,每个马赛克 ...
- 函数柯里化(Currying)小实践
什么是函数柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.这个技术由 Ch ...
- windows2008R2-AD域控组策略设置与其它相关设置
防火墙设置 修改>计算机配置>策略>安全设置>高级安全windows防火墙>高级安全windows防火墙 修改入站规则 1.组名-文件和打印机共享(SMB-In)> ...
- 对promise的研究1
通过看阮一峰老师的文章写出来的特此注明 1.Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.它由社区最早提出和实现,ES6 将其 ...
- python学习笔记(七)模块
一个python文件就是一个模块 1.标准模块 python自带的,不需要你安装的 2.第三方模块 需要安装,别人提供的,例:pip install radis 如果提示没有pip,把python下s ...
- 配置中心git版本示例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springCl ...
- VBA在Excel中的应用(三)
目录 Chart Export Chart Format Chart Lengend Chart Protect Chart Title Chart Chart Export 1. 将Exce ...
- Win7 64位系统 注册 ocx控件
32位系统注册ocx就不谈了.网上一搜一大把.下面说下win7 64位 旗舰版下如果注册ocx控件 1.首先复制 XXXX.OCX文件到“C:\Windows\SysWOW64”目录. (XXX ...
- (转)pd.read_csv之OSError: Initializing from file failed的解决方案
转:https://blog.csdn.net/funnyPython/article/details/78532102 rides = pd.read_csv(data_path)1 # OSErr ...