p2944 [USACO09MAR]地震损失2Earthquake Damage 2
分析
我们让s到1,关键点到t分别连流量为inf的边
于是我们可以考虑跑s到t的最小割
于是我们将所有点拆为两个点,关键点和1的两个点之间连inf,其余点连1
将原图的边也连上,流量为inf
于是跑最小割即可
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int dx[] = {,-,,};
const int dy[] = {,,,-};
const int inf = 1e9+;
int n,m,s,t,head[],to[],nxt[],w[],ano[],cnt,level[],cur[];
int used[];
inline void add(int x,int y,int z){
nxt[++cnt]=head[x];
head[x]=cnt;
to[cnt]=y;
w[cnt]=z;
ano[cnt]=cnt+;
nxt[++cnt]=head[y];
head[y]=cnt;
to[cnt]=x;
w[cnt]=;
ano[cnt]=cnt-;
}
inline bool bfs(){
memset(level,-,sizeof(level));
queue<int>q;
level[s]=;
q.push(s);
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=head[x];i;i=nxt[i])
if(level[to[i]]==-&&w[i]){
level[to[i]]=level[x]+;
if(to[i]==t)return ;
q.push(to[i]);
}
}
return ;
}
inline int dfs(int x,int flow){
if(x==t||!flow)return flow;
int res=;
cur[x]=head[x];
for(int i=cur[x];i;i=nxt[i]){
cur[x]=i;
if(level[to[i]]==level[x]+&&w[i]){
int f=dfs(to[i],min(w[i],flow-res));
w[i]-=f;
res+=f;
w[ano[i]]+=f;
}
}
if(!res)level[x]=-;
return res;
}
int main(){
int i,j,k,Ans=;
scanf("%d%d%d",&n,&m,&k);
s=*n+,t=s+;
add(s,,inf);
add(,n+,inf);
for(i=;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x+n,y,inf);
add(y+n,x,inf);
}
for(i=;i<=k;i++){
int x;
scanf("%d",&x);
add(x+n,t,inf);
add(x,x+n,inf);
used[x]=;
}
for(i=;i<=n;i++){
if(used[i])continue;
add(i,i+n,);
}
while(bfs())while(int a=dfs(s,inf))Ans+=a;
cout<<Ans;
return ;
}
p2944 [USACO09MAR]地震损失2Earthquake Damage 2的更多相关文章
- P2944 [USACO09MAR]地震损失2Earthquake Damage 2(网络流)
P2944 [USACO09MAR]地震损失2Earthquake Damage 2 $P$个点,$C$条双向边.求最少删去几个点使$N$个给定的点与点$1$分开. 显然的最小割. 将点$i$套路地拆 ...
- [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' ...
- 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条道路连接着 ...
- 洛谷 P2932 [USACO09JAN]地震造成的破坏Earthquake Damage
P2932 [USACO09JAN]地震造成的破坏Earthquake Damage 题目描述 Wisconsin has had an earthquake that has struck Farm ...
- BZOJ 1574: [Usaco2009 Jan]地震损坏Damage
Description 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有牛棚间的路经都还能使用. FJ的农场有P(1 <= P <= 30,000)个牛棚,编号1.. ...
随机推荐
- 老齐python-基础8(函数)
1.函数基本概念 2.理解函数 python中一个函数,就是一种映射关系 3.定义函数 #!/usr/bin/env python #coding:utf-8 def add_function(a,b ...
- Win10 TensorFlow(gpu)安装详解
Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...
- Linux编译前提前丰富库资源
Linux在软件编译的时候,时常提示一些依赖,无谓浪费时间.我们可以事先将常用的依赖包,一起安装一下,防止后续编译过程被打断. 之前,有个很重要的前提,就是epel源的安装. # ls /etc/yu ...
- python学习(二十七) 元组
# 元组是不可变的,不能改变元素的值,也不能增加.减少元素my_tuple = (1, 2, 3, 3)print(my_tuple) # 查找元素位置print(my_tuple.index(2)) ...
- Druid.io系列(六):问题总结
原文地址: https://blog.csdn.net/njpjsoftdev/article/details/52956508 我们在生产环境中使用Druid也遇到了很多问题,通过阅读官网文档.源码 ...
- 修改win7远程桌面端口号
Windows 7/Vista/XP/2003等系统中的远程终端服务是一项功能非常强大的服务,同时也成了入侵者长驻主机的通道,入侵者可以利用一些手段得到管理员账号和密码并入侵主机.下面,我们来看看如何 ...
- Http协议是有状态的还是无状态的???
在查找session和cookie的区别的资料时,有资料提到http是无状态的.我是不会忘记的,企鹅面试官问过我“http协议是有状态的还是无状态的”,我说不知道(之前没听说过).后来想想那“404 ...
- OD 实验(十五) - 对一个程序的逆向
程序: 打开程序 出现一个 NAG 窗口 这是主界面 点击 Exit 程序出现 NAG 窗口,然后退出 用 PEiD 看一下 是用 VC++ 6.0 写的程序 逆向: 用 OD 载入程序 跑一下程序 ...
- 千万别在UI线程上调用Control.Invoke和Control.BeginInvoke,因为这些是依然阻塞UI线程的,造成界面的假死
原文地址:https://www.cnblogs.com/wangchuang/archive/2013/02/20/2918858.html .c# Invoke和BeginInvoke 区别 Co ...
- 第五章 服务容错保护: Spring Cloud Hystrix
在微服务架构中, 存在着那么多的服务单元, 若一个单元出现故障, 就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定.为了解决这样的问题, 产生了断路器等一系 ...