SHOI2007善意的投票
水题
最小割问题
考察什么?
冲突。
这种题不是没有过啊
有一个就是激光打别人的就是利用这个思想(搞忘做题解了,结果没权限了WOC)
利用S-T表示若联通则依旧有冲突
把S表示赞成,T表示不赞成
赞成的连T流1
不赞成的连S流1
如果有一对基友,两两双向连边!注意是无向边。
不会出事?
如果存在要割只会割形态学S-T的边
所以没事
#include<bits/stdc++.h>
using namespace std;
inline void read(int &x){x=0;int f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}x*=f;
}
const int N=1e6+10;
int INF=1e9+7;
struct Front_star{int u,v,w,nxt;
}e[N*4];
int cnt=1;
int first[N]={};
void addedge(int u,int v,int w){cnt++;e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].nxt=first[u];first[u]=cnt;
}
void add(int u,int v,int w){addedge(u,v,w);addedge(v,u,0);
}
//
int d[N]={};
int S=0;
int T;
queue<int> q;
bool BFS(){for(int i=S;i<=T;i++)d[i]=-1;d[S]=1;q.push(S);while(!q.empty()){int x=q.front();q.pop();for(int i=first[x];i;i=e[i].nxt){int v=e[i].v;if(e[i].w&&d[v]==-1){d[v]=d[x]+1;q.push(v);}}}return d[T]!=-1;
}
int dfs(int st,int ed,int nowdat){if(st==ed){return nowdat;}int dat=0;for(int i=first[st];i;i=e[i].nxt){int v=e[i].v;if(e[i].w&&d[v]==d[st]+1){int now=min(nowdat-dat,e[i].w);now=dfs(v,ed,now);e[i].w-=now;e[i^1].w+=now;dat+=now;if(nowdat==dat){return dat;}}}if(!dat){d[st]=-2;}return dat;
}
int Dinic(){int ret=0;while(BFS()){ret+=dfs(S,T,INF);} return ret;
}
int n,m;
int main(){read(n);read(m);T=n+10;for(int i=1;i<=n;i++){int x;read(x);if(x==0){add(S,i,1);}else{add(i,T,1);}}for(int i=1;i<=m;i++){int x,y;read(x);read(y);add(x,y,1);add(y,x,1);}cout<<Dinic();
}
SHOI2007善意的投票相关推荐
- P2057 [SHOI2007]善意的投票 (最大流最小割)
P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查 最小割,两种意见可以看作源点S和T,我们需要做的是割最少的边使得S和T成为两个不同的集合,解释:割掉的边相当于1次冲突(因 ...
- [洛谷P2057][SHOI2007]善意的投票
题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...
- 洛谷 - P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查(最大流最小割)
题目链接:点击查看 题目大意:有 n 个人,每个人都有两种意见,且有许多朋友,需要让朋友之间的意见尽可能统一,问最少有多少冲突 题目分析:因为每个人有两种意见,所以分别将其与源点和汇点相连,因为最后可 ...
- P2057 [SHOI2007]善意的投票 最小割
题意大致就是有n个人有两种不同的意见并且有许多朋友,需要让朋友间尽可能的统一意见(少发生冲突),如果一个人违反自己的本意也算冲突,求最少的冲突... 很明显是最小割 跑最大流算出冲突数 两种意见可 ...
- 洛谷P2057 【SHOI2007】善意的投票
洛谷P2057 [SHOI2007]善意的投票 题目链接 这道题是最小割的一个经典应用:划分集合. 题目的意思就是就是将所有的小朋友分为两个集合:同意睡觉和不同意睡觉的.不同的集合之间的边都要断开. ...
- 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割
[BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...
- 【BZOJ 1934】 [Shoi2007]Vote 善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1205 Solved: 746 [Submit] ...
- bzoj 1934: [Shoi2007]Vote 善意的投票(最小割)
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1796 Solved: 1094 [Submit ...
- bzoj1934【shoi2007】Vote善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1533 Solved: 942 [Submit] ...
最新文章
- 辰星计划 2021 | 璀璨起航,旷视春季实习生招募开启
- python读取txt中的一列称为,从python中的文本文件读取特定列
- 9.35 渲染时字符串转义
- Windows 系统中 Python下 Pygame 的安装
- C/C++:Windows编程—Inline Hook内联钩子(上)
- linux指令:软连接与历史命令
- Zookeeper可视化工具PrettyZoo
- jdi屏幕斜纹_荣耀V10屏幕有斜纹问题,有人甚至因此退货,真的这么严重?
- leetcode 148. Sort List
- 【软件测试】验收测试是以最终用户为主的测试
- 双二极管(BAT54S)在电路中起什么作用? 钳位和保护
- ××项目日常工作制度和流程(草案)
- 我要偷偷的学Python,然后惊呆所有人(第四天)
- 最大似然估计方法介绍
- github Your account has been flagged.提示情况的解决办法
- 同步FIFO和异步FIFO
- 【Bio】基础生物学 - 基因 gene
- 电影院3d是什么模式的_3D的完整形式是什么?
- CSUST选拔赛题解之-Problem H: 逃出监狱
- 【去雾】|GMAN 去雾
热门文章
- SAP那些事-职业篇-8-顾问“三宝”
- java 反射 transient_JAVA 对象序列化(三)——transient以及Externalizable的一种替代方法(使用Serializable)...
- Revit模型浏览器
- 【Android2 2及以上】如何允许你的应用移动到SD卡
- TYVJ p1006 isbn
- 小红帽的故事居然是从法国民间的一个狼人诱奸小女孩的故事改来的
- 再会,Unite 2017 Shanghai
- 深入探索 Linux listen() 函数 backlog 的含义
- 不是吧!都2021年了!软件测试工程师还要加班撸代码吗?
- 三叉神经痛以2种“假面目”出现?这样做能远离痛!