博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小Z爱划水
阅读量:4441 次
发布时间:2019-06-07

本文共 1907 字,大约阅读时间需要 6 分钟。

题目背景

小Z在机房。

题目描述

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

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

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

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

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

输入输出格式

输入格式:

 

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

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:
3 10 1 01 2
输出样例#1:
1

说明

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

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

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

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

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

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

#include
#include
#include
#include
#include
#include
using namespace std;int read(){ int t=1,num=0; char c=getchar(); while(c>'9'||c<'0'){ if(c=='-')t=-1;c=getchar();} while(c>='0'&&c<='9'){num=num*10+c-'0';c=getchar();} return num*t;}const int INF=0x7fffffff-199;struct Yzyet{ int t,c,r;};vector
g[310];int n,m,iter[310],lev[310];void add(int f,int t,int c){ g[f].push_back((Yzyet){t,c,g[t].size()}); g[t].push_back((Yzyet){f,0,g[f].size()-1});}void bfs(int s){ memset(lev,0,sizeof(lev)); queue
q; lev[s]=1; q.push(s); while(!q.empty()){ int v=q.front();q.pop(); for(int i=0;i
0&&lev[e.t]==0){ lev[e.t]=lev[v]+1; q.push(e.t); } } }}int dfs(int v,int t,int f){ if(v==t)return f; for(int &i=iter[v];i
0&&lev[v]+1==lev[e.t]){ int d=dfs(e.t,t,min(f,e.c)); if(d>0){ e.c-=d; g[e.t][e.r].c+=d; return d; } } } return 0;}int flow(int s,int t){ int fl=0; while(1){ bfs(s); if(lev[t]==0)return fl; memset(iter,0,sizeof(iter)); int f; while((f=dfs(s,t,INF))>0)fl+=f; }}int main(){ n=read();m=read(); for(int i=1;i<=n;i++){ int h=read(); if(h==0)add(0,i,1); else add(i,n+1,1); } for(int i=1;i<=m;i++){ int a,b; a=read();b=read(); add(a,b,1);add(b,a,1); } printf("%d",flow(0,n+1)); return 0;}

本文由Yzyet编写,网址为www.cnblogs.com/Yzyet。非Yzyet同意,禁止转载,侵权者必究。

转载于:https://www.cnblogs.com/Yzyet/p/6916100.html

你可能感兴趣的文章
大学总结之影响我最深的十本书
查看>>
用myEclipse连接数据源生成动态数据报表
查看>>
[myeclipse]@override报错问题
查看>>
자주 쓰이는 정규표현식
查看>>
超简单的listview单选模式SingleMode(自定义listview item)
查看>>
vue-11-路由嵌套-参数传递-路由高亮
查看>>
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>
C语言常见问题 如何用Visual Studio编写C语言程序测试
查看>>
Web用户的身份验证及WebApi权限验证流程的设计和实现
查看>>
hdu 2098 分拆素数和
查看>>
[ONTAK2010]Peaks kruskal重构树,主席树
查看>>
ECMAScript6-let与const命令详解
查看>>
iOS 使用系统相机、相册显示中文
查看>>
什么是敏捷设计
查看>>
SCSS的基本操作
查看>>
"安装程序无法定位现有系统分区" 问题解决
查看>>
.NET中栈和堆的比较
查看>>