题目:

小Z在机房。他和其它机房同学都面临一个艰难的抉择,那就是 要不要划水?

每个人都有自己的一个意见,有的人想做题,有的人想划水。

当然,每个人只能选择一个事情做。如果一个人做的事情和他想做的不同,那么他会产生1不满意度。

更棘手的是,他们之间一些人是朋友,如果两人是朋友,但是他们做的事情不同,那么会有1不满意度产生。

小Z不想看到大家闹得不高兴,他想知道,不满意度最小能是多少?

输入/输出格式

第一行两个数字n,m 分别表示有n个人和m对朋友关系

第二行n个0/1,1表示想做题,0表示想划水。

然后是m行,每行两个数字a,b 表示a和b是朋友

输出只包含一个数字,表示最小的不满意度。

样例输入/输出

Input:

3 1

0 1 0

1 2

Output:

1

样例解释

每个人都做自己想做的事情,但是1和2不同,所以答案是1.

还有答案是1的其它方案,可以证明这是最小的不满意度。

数据范围与约定

      对于10%的数据,满足n<=10 m=10

对于30%的数据,满足n,m<=20

对于100%的数据,满足n<=300 m<=n*(n-1)/2

保证没有重复的朋友关系。

这题。。。网络流。。

根据最小割=最大流

网络流就是正解。。

那么怎么建图呢?

如果一个人想读书,那么从S到i连一条流量为1的边

否者从i到T连一条流量为1的边

如果有2个人是朋友。那么他们互相连一条流量为1的边。

很显然,如果2个朋友的选项不同,那么就会产生一条由S到T的通路。

那么我们求这道题的最小割即为本题答案

下面贴代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define r register
#define inf 0x3f3f3f3f
using namespace std;
int n,m,num=;
int S,T;
struct edge{
int next,to,w;
}g[];
int que[];
int head[];
int lev[];
int iter[];
void ins(int u,int v,int w){g[++num].next=head[u];g[num].to=v;head[u]=num;g[num].w=w;}
void insw(int u,int v,int w){ins(u,v,w);ins(v,u,);}
bool bfs(){
memset(lev,-,sizeof(lev));
lev[S]=;
int h=,t=;
que[h]=S;
while(h<=t)
{
int tmp=que[h];
for(int i=head[tmp];i;i=g[i].next)
{
if(lev[g[i].to]==-&&g[i].w)
{
que[++t]=g[i].to;
lev[g[i].to]=lev[tmp]+;
}
}
h++;
}
return lev[T]!=-;
}
int dfs(int u,int v,int flow)
{
if(u==v) return flow;
r int used=;
for(r int i=head[u];i;i=g[i].next)
{
if(g[i].w&&lev[g[i].to]==lev[u]+)
{
r int fl=dfs(g[i].to,v,min(flow-used,g[i].w));
used+=fl;g[i].w-=fl;g[i^].w+=fl;
if(used==flow) return flow;
}
}
if(!used)lev[u]=-;
return used;
}
int dinic()
{
r int flow=;
while(bfs())
{
r int fl=dfs(S,T,inf);
while(fl)flow+=fl,fl=dfs(S,T,inf);
}
return flow;
}
int main(){
freopen("boat.in","r",stdin);
freopen("boat.out","w",stdout);
scanf("%d%d",&n,&m);
S=;T=n+;
r int x,y;
for(r int i=;i<=n;i++){scanf("%d",&x);if(x)insw(S,i,); else insw(i,T,);}
for(r int i=;i<=m;i++){scanf("%d%d",&x,&y);ins(x,y,);ins(y,x,);}
printf("%d",dinic());
return ;
fclose(stdin);
fclose(stdout);
}

小Z爱划水(NOIP信(sang)心(bin)赛)From FallDream的更多相关文章

  1. 小Z爱序列(NOIP信(sang)心(bin)赛)From FallDream(粗制单调队列&单调栈的算法解析)

    原题: 小Z最擅长解决序列问题啦,什么最长公共上升然后下降然后上升的子序列,小Z都是轻松解决的呢. 但是小Z不擅长出序列问题啊,所以它给了你一道签到题. 给定一个n个数的序列ai,你要求出满足下述条件 ...

  2. 【0521模拟赛】小Z爱划水

    题目描述 小Z和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同,那么他 ...

  3. 小Z爱图论(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z最近喜欢上了图论,于是他研究了一下图的连通性问题.但是他遇到了一个难题. 给定一个n个点的有向图,求有多少点对(i,j)满足从i点出发能到达点j ? 小Z仅会简单的朴素算法,所以他想问问你 ...

  4. 【20170920校内模拟赛】小Z爱学习

    所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description ​ 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...

  5. 【0521模拟赛】小Z爱数学

    题目描述 小Z想求F(n,k),F(n,k)表示n的所有因数pi中,满足n/pi <= k 的和. 小Z发现还是很水,所以他决定加大难度. 求 小Z还准备了很多个询问.现在你来解决一下吧. 输入 ...

  6. 2017-10-5模拟赛T2 小Z爱排序(sorting.*)

    Description Solution 比赛时找到了规律,但是没有证出来……(当然最后还是AC了……) 显然没有被操作的数在排好序的序列中一定是连续的一段. 所以,没有被操作的数一定从左到右连续地递 ...

  7. 【20170521校内模拟赛】热爱生活的小Z

    学长FallDream所出的模拟赛,个人感觉题目难度还是比较适中的,难度在提高+左右,可能比较接近弱省省选,总体来讲试题考查范围较广,个人认为还是很不错的. 所有试题如无特殊声明,开启-O2优化,时限 ...

  8. 【BZOJ2038】【莫队】小z的袜子

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  9. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

随机推荐

  1. PyQuery网页解析库

    from pyquery import PyQuery as pq 字符串初始化: doc = pq(html) URL初始化:doc = pq(url = "···") 文件初始 ...

  2. linux-shell——01

    没有什么好的标题,只是一些随笔.我用的是linux虚拟机,red hat 7 一:nat模式使得虚拟机可以访问外网,但是这种模式下只可以访问外网,但外面的不能访问里面 首先将虚拟机的网络连接改为nat ...

  3. 一个比较良好的flask项目结构

    一个比较良好的flask项目结构 project/ app/                    # 整个程序的包目录 static/                 # 静态资源文件 js/    ...

  4. 20,Django contenttypes 应用

    contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 1.创建一个项目 2.数据库迁移,生成默认表. 3.存着所 ...

  5. P1297 网线切割

    P1297 网线切割 题目描述 Wonderland居民决定举行一届地区性程序设计大赛.仲裁委员会志愿负责这次赛事并且保证会组织一次有史以来最公正的比赛.为此,所有参赛者的电脑和网络中心会以星状网络连 ...

  6. HA集群中namenode连接不上journalnode,导致namenode启动不了

    查看日志发现一下的错误: 2018-10-08 15:29:26,373 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: ...

  7. loj2100 「TJOI2015」线性代数

    先推公式,推出个这,然后因为是 \(0/1\) 矩阵,选一个有损耗,两个一组有加成,就想到了最大权闭合子图,(飞行计划问题) #include <iostream> #include &l ...

  8. Pascal 基础教程

    Pascal现在还有人想学习吗?先给出一本不错的Pascal教程,Object Pascal的教程我日后给出. Pascal基础教程       第一课 初识PASCAL语言           …… ...

  9. python-使用unittest和ddt实现数据驱动

    一.数据驱动的概念 相同测测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式成为数据驱动.测试框架使用unittest 和ddt模块相结合的方式 二.unittest ...

  10. NGUI-Tweens

    Tweens(补间动画) 补间动画有很多种: 这里以Tween Height为例: 项目层次: btn为一个按钮,group为一组图片精灵,预览图如下: 第一步:先为每个item附加一个Tween H ...