【[SHOI2007]善意的投票】
直接是最小割啊
设最终还和\(S\)相连表示睡觉,和\(T\)相连表示不睡觉
如果这个人想睡觉,那么就从源点向它连\(1\)的边,表示割掉这条边选择不睡觉的代价为1
如果这个人不想睡觉的话,就向汇点连一条\(1\)的边,表示选择睡觉的代价是\(1\)
对于朋友关系的话之间连边就好了,可以使得这两个人在选择不同的时候必须割掉这条额外的边
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#define re register
#define maxn 305
#define LL long long
#define INF 9999999
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x;
}
struct E
{
int v,nxt,w,f;
}e[maxn*maxn*2];
int n,m,num=1;
int S,T,ans;
int head[maxn],cur[maxn],d[maxn];
inline void add_edge(int x,int y,int z) {e[++num].v=y,e[num].nxt=head[x],head[x]=num,e[num].w=z;}
inline void connect(int x,int y,int z){add_edge(x,y,z);add_edge(y,x,0);}
inline int BFS()
{
std::queue<int> q;
for(re int i=0;i<=T;i++) d[i]=0,cur[i]=head[i];
d[S]=1,q.push(S);
while(!q.empty())
{
int k=q.front();q.pop();
for(re int i=head[k];i;i=e[i].nxt)
if(!d[e[i].v])
{
if(e[i].w<=e[i].f) continue;
d[e[i].v]=d[k]+1,q.push(e[i].v);
}
}
return d[T];
}
int dfs(int x,int now)
{
if(!now||x==T) return now;
int flow=0,ff;
for(re int& i=cur[x];i;i=e[i].nxt)
if(d[e[i].v]==d[x]+1)
{
ff=dfs(e[i].v,min(e[i].w-e[i].f,now));
if(!ff) continue;
now-=ff,flow+=ff;
e[i].f+=ff,e[i^1].f-=ff;
if(!now) break;
}
return flow;
}
int main()
{
n=read();m=read();
S=0,T=n+1;
int opt;
for(re int i=1;i<=n;i++)
{
opt=read();
if(opt) connect(S,i,1),connect(i,T,0);
else connect(S,i,0),connect(i,T,1);
}
for(re int i=1;i<=m;i++)
{
int x=read(),y=read();
connect(x,y,1),connect(y,x,1);
}
while(BFS()) ans+=dfs(S,INF);
std::cout<<ans;
return 0;
}
【[SHOI2007]善意的投票】的更多相关文章
- 洛谷 P2057 [SHOI2007]善意的投票 解题报告
P2057 [SHOI2007]善意的投票 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照 ...
- P2057 [SHOI2007]善意的投票 (最大流)
题目 P2057 [SHOI2007]善意的投票 解析 网络流的建模都如此巧妙. 我们把同意的意见看做源点\(s\),不同意的意见看做汇点\(t\). 那我们\(s\)连向所有同意的人,\(t\)连向 ...
- P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查
P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查 拿来练网络流的qwq 思路:如果i不同意,连边(i,t,1),否则连边(s,i,1).好朋友x,y间连边(x,y,1)(y ...
- [SHOI2007]善意的投票
题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来 ...
- 1934. [SHOI2007]善意的投票【最小割】
Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可 ...
- P2057 [SHOI2007]善意的投票 最小割
$ \color{#0066ff}{ 题目描述 }$ 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照 ...
- BZOJ1934:[SHOI2007]善意的投票 & BZOJ2768:[JLOI2010]冠军调查——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1934 https://www.lydsy.com/JudgeOnline/problem.php? ...
- Luogu P2057 [SHOI2007]善意的投票
题目链接 \(Click\) \(Here\) 考虑模型转换.变成文理分科二选一带收益模型,就一波带走了. 如果没有见过这个模型的话,这里讲的很详细. #include <bits/stdc++ ...
- 【题解】Luogu P2057 [SHOI2007]善意的投票
原题传送门 我们一眼就能看出这是一道最小割的题 我们设不睡觉这种状态为S,睡觉这种状态为T 对于每个人,如果不想睡觉,就从S向这个人连流量为1的边,否则,就从这个人向T连流量为1的边 对于每一对朋友, ...
- P2057 [SHOI2007]善意的投票
思路 简单的最小割模型 最小割的模型就是选出一些边,把点集划分成S和T两个部分,使得代价最小 到这题上就是板子了 代码 #include <cstdio> #include <alg ...
随机推荐
- ASP.ENT前台更改绑定数据的日期格式
1.Eval和Bind的区别 绑定表达式 < %# Eval("字段名") %> < %# Bind("字段名") %> 区别 1.ev ...
- Virtualbox/Vagrant安装
它们分别是什么? VirtualBox: 号称是最强的免费虚拟机软件和VM类似. 不仅具有丰富的特色,而且性能也很优异. Vagrant: 是一个基于Ruby的工具,用于创建和部署虚拟化开发环境. 使 ...
- Menustrip控件和ContextMenustrip控件
Menustrip 控件是由System.Windows.Forms.Menustrip类提供,取代了以前的MainMenu控件,是应用程序菜单结构的容器,在建立菜单时,要给Menustrip控件添加 ...
- lodop判断是否打印成功
需要引用js <script src="js/jquery-3.3.1.js"></script> <script src="js/Lodo ...
- RabbitMQ---3、c#实现
1.EasyNetQ组件的使用 EasyNetQ组件的使用方式比较简单,跟很多组件都类似,例如:建立连接,进行操作做等等,对于EasyNetQ组件也是如此.(mq的升级,用于简化rabbitmq应用代 ...
- 三、cent OS安装配置nginx
简介Tengine是淘宝发起的web服务器项目,简单的讲就是对nginx进行了二次开发并提供了更丰富的功能,官网地址:http://tengine.taobao.org/ 下载nginx这里使用淘宝二 ...
- oracle锁表问题解决
select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l ...
- Spring动态注册bean实现动态多数据源
Spring动态注册bean实现动态多数据源 http://blog.csdn.net/littlechang/article/details/8071882
- arcgis 3种方法快速制作tpk文件(转)
来自:http://blog.csdn.net/arcgis_mobile/article/details/8048549 tpk是ArcGIS10.1推出的一种新的数据文件类型,主要是用于将切片文件 ...
- 如何使用火狐浏览器的Poster插件进行post请求
原文:http://blog.csdn.net/cjm2484836553/article/details/72453907 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...