博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj1934][Shoi2007]Vote 善意的投票
阅读量:4561 次
发布时间:2019-06-08

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

来自FallDream的博客,未经允许,请勿转载,谢谢。


幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。 我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?

n<=300

每个小朋友如果想睡觉那么从S向他连边,如果想修仙从它向T连边,然后朋友之间互相连边。

#include
#include
#include
#define S 0#define T 301#define INF 2000000000using namespace std;inline int read(){ int x = 0 , 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();} return x * f;}int n,m,q[T+5],top=0,head[T+5],c[T+5],d[T+5],cnt=1,ans=0;struct edge{
int to,next,w;}e[T*T*10+5];void ins(int f,int t,int w){ e[++cnt]=(edge){t,head[f],w};head[f]=cnt; e[++cnt]=(edge){f,head[t],0};head[t]=cnt;}int dfs(int x,int f){ if(x==T) return f; int used=0; for(int&i=c[x];i;i=e[i].next) if(e[i].w&&d[e[i].to]==d[x]+1) { int w=dfs(e[i].to,min(f-used,e[i].w)); used+=w;e[i].w-=w;e[i^1].w+=w; if(f==used) return f; } return d[x]=-1,used;}bool bfs(){ memset(d,0,sizeof(d));int i,j; for(d[q[top=i=1]=S]=1;i<=top;++i) for(int j=c[q[i]]=head[q[i]];j;j=e[j].next) if(e[j].w&&!d[e[j].to]) d[q[++top]=e[j].to]=d[q[i]]+1; return d[T];}int main(){ n=read();m=read(); for(int i=1;i<=n;i++) read()?ins(S,i,1):ins(i,T,1); for(int i=1;i<=m;i++) { int x=read(),y=read(); ins(x,y,1);ins(y,x,1); } while(bfs()) ans+=dfs(S,INF); cout<

 

转载于:https://www.cnblogs.com/FallDream/p/bzoj1934.html

你可能感兴趣的文章
Is it possible to display icons in a PopupMenu?
查看>>
制作导航条
查看>>
iOS中的内存管理1
查看>>
23种设计模式全解析
查看>>
Learning Python 008 正则表达式-003 sub()方法
查看>>
Linux的虚拟机拷贝到另外的操作系统时,NAT方式的静态IP无效,一直是获取的DHCP动态地址...
查看>>
要检测两个C文件的代码的抄袭情况
查看>>
PHP-多域名单点登陆方案
查看>>
iOS开发之应用内支付IAP全部流程
查看>>
【web技术】html特效代码(一)
查看>>
SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
查看>>
高可用集群搭建
查看>>
Lua学习笔记
查看>>
Redis监控工具,命令和调优
查看>>
zabbix-mysql迁移分离
查看>>
jQuery调用WCF 说明
查看>>
算法第5章作业
查看>>
7.9 练习
查看>>
基于ArcGIS JS API的在线专题地图实现
查看>>
learnByWork
查看>>