BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割
1934: [Shoi2007]Vote 善意的投票
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://www.lydsy.com/JudgeOnline/problem.php?id=1934
Description
幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。 我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?
Input
Output
只需要输出一个整数,即可能的最小冲突数
Sample Input
3 3
1 0 0
1 2
1 3
3 2
Sample Output
HINT
题意
题解:
网络流最小割
S连同意的,T连不同意的
然后朋友相互连接
代码:
- #include<cstdio>
- #include<cstring>
- #include<queue>
- #include<cmath>
- using namespace std;
- const int Ni = ;
- const int MAX = <<;
- struct Edge{
- int u,v,c;
- int next;
- }edge[*Ni];
- int n,m;
- int edn;//边数
- int p[Ni];//父亲
- int d[Ni];
- int sp,tp;//原点,汇点
- void addedge(int u,int v,int c)
- {
- edge[edn].u=u; edge[edn].v=v; edge[edn].c=c;
- edge[edn].next=p[u]; p[u]=edn++;
- edge[edn].u=v; edge[edn].v=u; edge[edn].c=;
- edge[edn].next=p[v]; p[v]=edn++;
- }
- int bfs()
- {
- queue <int> q;
- memset(d,-,sizeof(d));
- d[sp]=;
- q.push(sp);
- while(!q.empty())
- {
- int cur=q.front();
- q.pop();
- for(int i=p[cur];i!=-;i=edge[i].next)
- {
- int u=edge[i].v;
- if(d[u]==- && edge[i].c>)
- {
- d[u]=d[cur]+;
- q.push(u);
- }
- }
- }
- return d[tp] != -;
- }
- int dfs(int a,int b)
- {
- int r=;
- if(a==tp)return b;
- for(int i=p[a];i!=- && r<b;i=edge[i].next)
- {
- int u=edge[i].v;
- if(edge[i].c> && d[u]==d[a]+)
- {
- int x=min(edge[i].c,b-r);
- x=dfs(u,x);
- r+=x;
- edge[i].c-=x;
- edge[i^].c+=x;
- }
- }
- if(!r)d[a]=-;
- return r;
- }
- int dinic(int sp,int tp)
- {
- int total=,t;
- while(bfs())
- {
- while(t=dfs(sp,MAX))
- total+=t;
- }
- return total;
- }
- int main()
- {
- int i,u,v,c;
- while(~scanf("%d%d",&n,&m))
- {
- edn=;//初始化
- memset(p,-,sizeof(p));
- sp=;tp=n+;
- for(int i=;i<=n;i++)
- {
- int x;
- scanf("%d",&x);
- if(x)addedge(sp,i,);
- else addedge(i,tp,);
- }
- for(int i=;i<=m;i++)
- {
- int x,y;
- scanf("%d%d",&x,&y);
- addedge(x,y,);
- addedge(y,x,);
- }
- printf("%d\n",dinic(sp,tp));
- }
- return ;
- }
BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割的更多相关文章
- 最小投票BZOJ 1934([Shoi2007]Vote 善意的投票-最小割)
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下最小投票 1934: [Shoi2007]Vote 好心的投票 Time Limit: 1 Sec Memory L ...
- 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割
[BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...
- BZOJ 1934 [Shoi2007]Vote 善意的投票(最小割)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1934 [题目大意] 每个人对于投票都有自己原来的观点:1或者0, 他可以违背自己原来的 ...
- bzoj 1934: [Shoi2007]Vote 善意的投票 (最小割)
原来是赞同的连源,原来是反对的连汇,然后是朋友的就连在一起,这样最小割就是割掉违背和谐的吧 type arr=record toward,next,cap:longint; end; const ma ...
- ●BZOJ 1934 [Shoi2007]Vote 善意的投票
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1934 题解: 题目有点迷. S向为1的点连边,为0的点向T连边,在有关系的两个点之间连双向边 ...
- 【刷题】BZOJ 1934 [Shoi2007]Vote 善意的投票
Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可 ...
- bzoj 1934: [Shoi2007]Vote 善意的投票
#include<cstdio> #include<iostream> #define M 100000 #include<cstring> using names ...
- 【bzoj2768/bzoj1934】[JLOI2010]冠军调查/[Shoi2007]Vote 善意的投票 最小割
bzoj2768 题目描述 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教育学院进行了一次大规模的调查,调查的内容就是关 ...
- B1934 [Shoi2007]Vote 善意的投票 最小割
一开始不太会,结果看完题解就是一个建图的网络流.然后就结了. 题干: 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人 ...
随机推荐
- Windows下Vim设置
进入安装目录,找到_vimrc文件,用文本编辑器打开,在前面加入下述内容 设置中文支持 " 设置编码自动识别, 中文引号显示 " set fileencodings=utf-8,c ...
- Shell中判断字符串是否为数字的6种方法分享
#!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...
- CodeForces Round #287 Div.2
A. Amr and Music (贪心) 水题,没能秒切,略尴尬. #include <cstdio> #include <algorithm> using namespac ...
- spring+springMVC+JPA配置详解(使用缓存框架ehcache)
SpringMVC是越来越火,自己也弄一个Spring+SpringMVC+JPA的简单框架. 1.搭建环境. 1)下载Spring3.1.2的发布包:Hibernate4.1.7的发布包(没有使用h ...
- 扩展Oracle表空间
1. 查看当前表空间利用率SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)" ...
- JavaScript中定时器
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务. setTimeout() ...
- EF Code First 学习笔记:约定配置
要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...
- ollydbg z
通达信l2密码器方法: 1:使用Ollydbg,点文件,打开,选择通达信的可执行文件(或者把通达信的执行文件直接拖进Ollydbg的窗口),按F9运行程序. 2:正常使用通达信,进入到K线图后,在k线 ...
- gem install走代理,速度刚刚的
有个树莓pi,安装了shadowsocks 和 cow ,做代理,走ipv6,学校不收ipv6流量钱.速度也不错,快的下载可达10M/s. gem install xx遇到墙了. nano ~/.ge ...
- 自己手写http服务器 http响应信息的封装与测试
package cn.edu.sss.httpServer; import java.io.BufferedWriter; import java.io.IOException; import jav ...