传送门

分析

我们让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的更多相关文章

  1. P2944 [USACO09MAR]地震损失2Earthquake Damage 2(网络流)

    P2944 [USACO09MAR]地震损失2Earthquake Damage 2 $P$个点,$C$条双向边.求最少删去几个点使$N$个给定的点与点$1$分开. 显然的最小割. 将点$i$套路地拆 ...

  2. [USACO09MAR]地震损失2Earthquake Damage 2

    地震破坏 时间限制: 1 Sec  内存限制: 128 MB 题目描述 威斯康星发生了一场地震!约翰的牧场遭到了打击,有一些牛棚变成了废墟,如果一间牛棚遭到 了破坏,那么所有和它相连的道路都不能使用了 ...

  3. 洛谷2944 [USACO09MAR]地震损失2Earthquake Damage 2

    https://www.luogu.org/problem/show?pid=2944 题目描述 Wisconsin has had an earthquake that has struck Far ...

  4. 【P2944】地震损失(最大流,洛谷)

    绝对难度虚高的一题 看到题目,至少损坏几个房子,开始考虑最小割,建的是双向边,所以拆点,边权除了自己与自己的之外都连inf.然后把所有求救的点都连到超级源上,跑一遍最大流就可以了. #include& ...

  5. 【BZOJ1585】【Luogu2944】地震损失2(网络流)

    [BZOJ1585][Luogu2944]地震损失2(网络流) 题面 题目描述 Wisconsin has had an earthquake that has struck Farmer John' ...

  6. 1574: [Usaco2009 Jan]地震损坏Damage

    1574: [Usaco2009 Jan]地震损坏Damage Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 425  Solved: 232[Subm ...

  7. bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害

    1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着 ...

  8. 洛谷 P2932 [USACO09JAN]地震造成的破坏Earthquake Damage

    P2932 [USACO09JAN]地震造成的破坏Earthquake Damage 题目描述 Wisconsin has had an earthquake that has struck Farm ...

  9. BZOJ 1574: [Usaco2009 Jan]地震损坏Damage

    Description 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有牛棚间的路经都还能使用. FJ的农场有P(1 <= P <= 30,000)个牛棚,编号1.. ...

随机推荐

  1. jeecg中选择的数据字典

    <t:dictSelect field="fjingji" hasLabel="false" typeGroupCode="fjingji&qu ...

  2. 阿里云视频点播 php开发

    先购买开通阿里云的<视频点播>服务,视频点播 可以购买套餐 ,我在项目中使用的是299套餐 开发前在<用户信息管理>生成Access Key Secret,开发密钥使用 阿里云 ...

  3. 打包python文件,让文件程序化

    通过对源文件打包,Python程序可以在没有安装 Python的环境中运行,也可以作为一个独立文件方便传递和管理. 现在网上主流的打包方式有两种py2exe或者pyinstaller两款多平台的Pyt ...

  4. 高德js API根据出行方式和出现策略由起始点经纬度实现路线规划

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. Mybatis数据的增删改查

    数据: Student{id int,name String ,age int} 配置mybatis-config.xml <?xml version="1.0" encod ...

  6. 汇编_指令_DS*10H的含义

    在8086存储器系统中,20位地址总线的地址是物理地址.但是由于8086内部寄存器都是16位的, 用16位寄存器直接访问20位存储器空间显然不可能,所以8086CPU使用了存储器分段的办法.这 样内存 ...

  7. nginx web服务器应用

    Nginx介绍 Nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件,因具有高并发(特别是静态资源),占用系统资源少等特性,且功能丰富而逐渐流行起来.功能应用上,Nginx不但是一个优 ...

  8. kubernetes 学习 pod相关

    1  pod的状态: Pending, Running, Succeeded, Failed, Unknown 2  pod重启策略: Always(自动重启,是默认的) .  OnFailure(容 ...

  9. 【转】WebAPI使用多个xml文件生成帮助文档

    来自:http://www.it165.net/pro/html/201505/42504.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet ...

  10. 存储过程与SQL语句怎么选择

    应用存储过程的优点:1.具有更好的性能存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度.2 ...