bzoj1934: [Shoi2007]Vote 善意的投票(最小割)
传送门
考虑源点为同意,汇点为反对,那么只要源点向同意的连边,不同意的向汇点连边,求个最小割就是答案
然后考虑朋友之间怎么办,我们令朋友之间连双向边。这样不管怎么割都能对应一种选择情况。那么还是求一个最小割就行了
1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<queue> 6 #define inf 0x3f3f3f3f 7 using namespace std; 8 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 9 char buf[1<<21],*p1=buf,*p2=buf; 10 inline int read(){ 11 #define num ch-'0' 12 char ch;bool flag=0;int res; 13 while(!isdigit(ch=getc())) 14 (ch=='-')&&(flag=true); 15 for(res=num;isdigit(ch=getc());res=res*10+num); 16 (flag)&&(res=-res); 17 #undef num 18 return res; 19 } 20 const int N=5005,M=500005; 21 int head[N],Next[M],ver[M],edge[M],tot=1; 22 int S,T,dep[N],cur[N],n,m; 23 queue<int> q; 24 inline void add(int u,int v,int e){ 25 ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e; 26 ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=0; 27 } 28 bool bfs(){ 29 memset(dep,-1,sizeof(dep)); 30 while(!q.empty()) q.pop(); 31 for(int i=S;i<=T;++i) cur[i]=head[i]; 32 q.push(S),dep[S]=0; 33 while(!q.empty()){ 34 int u=q.front();q.pop(); 35 for(int i=head[u];i;i=Next[i]){ 36 int v=ver[i]; 37 if(dep[v]<0&&edge[i]){ 38 dep[v]=dep[u]+1,q.push(v); 39 if(v==T) return true; 40 } 41 } 42 } 43 return false; 44 } 45 int dfs(int u,int limit){ 46 if(u==T||!limit) return limit; 47 int flow=0,f; 48 for(int i=cur[u];i;cur[u]=i=Next[i]){ 49 int v=ver[i]; 50 if(dep[v]==dep[u]+1&&(f=dfs(v,min(limit,edge[i])))){ 51 flow+=f,limit-=f; 52 edge[i]-=f,edge[i^1]+=f; 53 if(!limit) break; 54 } 55 } 56 if(!flow) dep[u]=-1; 57 return flow; 58 } 59 int dinic(){ 60 int flow=0; 61 while(bfs()) flow+=dfs(S,inf); 62 return flow; 63 } 64 int main(){ 65 //freopen("testdata.in","r",stdin); 66 n=read(),m=read(),S=0,T=n+1; 67 for(int i=1,k;i<=n;++i) k=read(),k&1?add(S,i,1):add(i,T,1); 68 for(int i=1;i<=m;++i){ 69 int u=read(),v=read();add(u,v,1),add(v,u,1); 70 } 71 printf("%d\n",dinic()); 72 return 0; 73 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9579819.html
bzoj1934: [Shoi2007]Vote 善意的投票(最小割)相关推荐
- bzoj1934 [Shoi2007]Vote 善意的投票 最小割
一上来容易想到缩点dp,但由于一个集合是没法用状态表示的,所以不能dp 然后就可以想到最小割,即通过割边和代价完成分配: 就比较好做了,默认选0就和0连边,默认选1就和1连边,朋友之间连边,如果在同一 ...
- [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
建图方式: S->同意 ,反对->T 对于每一对好友连容量为1的边 #include <bits/stdc++.h> using namespace std; const in ...
- 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割
[BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...
- [bzoj1934][Shoi2007]Vote 善意的投票
来自FallDream的博客,未经允许,请勿转载,谢谢. 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为 ...
- bzoj 1934: [Shoi2007]Vote 善意的投票(最小割)
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1796 Solved: 1094 [Submit ...
- 【BZOJ 1934】 [Shoi2007]Vote 善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1205 Solved: 746 [Submit] ...
- P2057 [SHOI2007]善意的投票 最小割
题意大致就是有n个人有两种不同的意见并且有许多朋友,需要让朋友间尽可能的统一意见(少发生冲突),如果一个人违反自己的本意也算冲突,求最少的冲突... 很明显是最小割 跑最大流算出冲突数 两种意见可 ...
- ●BZOJ 1934 [Shoi2007]Vote 善意的投票
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1934 题解: 题目有点迷. S向为1的点连边,为0的点向T连边, 在有关系的两个点之间连双向 ...
- BZOJ 1934: [Shoi2007]Vote 善意的投票
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1934 求图的最小割=求一下图的最大流. #include <iostream> ...
最新文章
- Java基础:JavaNIO 之 内存映射文件原理
- sdut 2141 BFS(用邻接矩阵和邻接表(采用优先队列)实现
- android面试题总结加强版
- arima 数据预处理_时间序列分析|ARIMA模型分步骤解析及R中实践
- 程序员应对浏览器同源策略的姿势
- 2021高考成绩怎么查询时间北京,2021年北京高考成绩几号公布可以查询,查询时间安排...
- Autolayout的简单介绍和示例代码
- 空间留言工具_新房,拖把等清洁工具都放哪?
- SQL 中的 in 与 not in、exists 与 not exists 的区别以及性能分析
- MySQL某列增加标注_MySQL 使用CASE表达式给行做标记
- ATF(Arm Trusted Firmware)/TF-A Chapter 05 BL2
- 米字格图片可打印_练字本米字格模板可打印行楷书
- ubuntu常用功能安装集锦
- 计算机不能引导硬盘,联想电脑win10改win7后不能引导bios中找不到硬盘的解决教程...
- 读书百客:《十一月四日风雨大作》评赏
- 多核时代多线程编程(一)基本策略
- 【3D游戏建模全流程教学】在Maya中制作小岛模型
- 优秀产品经理必备的“十个证书”+项目管理工具
- 单片机进阶---PCB开发之照葫芦画瓢(一)
- 计算机硬件故障的表现,电脑硬件坏了,各会出现什么样的症状?如何检修?
热门文章
- 使用渐进式JPEG来提升用户体验
- spring配置数据库
- 软件生命周期管理研讨会有感
- 使用Spring.Net对Web页面进行依赖注入
- jSignature签名的用法,一文教会你(二)后台代码
- 异常在哪一层处理_WiFi速度慢,信号不稳定,除了重启路由器外,自己能怎么处理?...
- s丅7318是啥芯片_透彻解析LED驱动芯片HT1632C指令集与驱动编程
- 冯诺依曼机器人_冯·诺依曼型计算机的五大组成部分是什么?
- 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验
- html中input、label、form、textarea、select