最小割,考虑最小割就是要将整张图分为两块,本题中就分别表示赞同和不赞同,那么首先一开始赞同的点向S连边,不赞同的点向T连边,如果这些点分到了另一边就要割掉这条边,朋友关系同理,连双向边同样表示分到两边要割掉这条边,跑最小割=最大流即可

  1. 1 #include<bits/stdc++.h>
  2. 2 using namespace std;
  3. 3 #define N 305
  4. 4 struct ji{
  5. 5 int nex,to,len;
  6. 6 }edge[N*N];
  7. 7 queue<int>q;
  8. 8 int E,n,m,x,y,head[N],work[N],d[N];
  9. 9 void add(int x,int y,int z){
  10. 10 edge[E].nex=head[x];
  11. 11 edge[E].to=y;
  12. 12 edge[E].len=z;
  13. 13 head[x]=E++;
  14. 14 if (E&1)add(y,x,0);
  15. 15 }
  16. 16 bool bfs(){
  17. 17 memset(d,-1,sizeof(d));
  18. 18 q.push(0);
  19. 19 d[0]=0;
  20. 20 while (!q.empty()){
  21. 21 int k=q.front();
  22. 22 q.pop();
  23. 23 for(int i=head[k];i!=-1;i=edge[i].nex)
  24. 24 if ((edge[i].len)&&(d[edge[i].to]<0)){
  25. 25 d[edge[i].to]=d[k]+1;
  26. 26 q.push(edge[i].to);
  27. 27 }
  28. 28 }
  29. 29 return d[n+1]>=0;
  30. 30 }
  31. 31 int dfs(int k,int s){
  32. 32 if (k>n)return s;
  33. 33 int p;
  34. 34 for(int &i=work[k];i!=-1;i=edge[i].nex)
  35. 35 if ((edge[i].len)&&(d[edge[i].to]==d[k]+1)){
  36. 36 p=dfs(edge[i].to,min(s,edge[i].len));
  37. 37 if (p){
  38. 38 edge[i].len-=p;
  39. 39 edge[i^1].len+=p;
  40. 40 return p;
  41. 41 }
  42. 42 }
  43. 43 return 0;
  44. 44 }
  45. 45 int main(){
  46. 46 scanf("%d%d",&n,&m);
  47. 47 memset(head,-1,sizeof(head));
  48. 48 for(int i=1;i<=n;i++){
  49. 49 scanf("%d",&x);
  50. 50 if (x)add(0,i,1);
  51. 51 else add(i,n+1,1);
  52. 52 }
  53. 53 for(int i=1;i<=m;i++){
  54. 54 scanf("%d%d",&x,&y);
  55. 55 add(x,y,1);
  56. 56 edge[E-1].len=1;
  57. 57 }
  58. 58 int ans=0;
  59. 59 while (bfs()){
  60. 60 memcpy(work,head,sizeof(head));
  61. 61 while (x=dfs(0,0x3f3f3f3f))ans+=x;
  62. 62 }
  63. 63 printf("%d",ans);
  64. 64 }

[bzoj1934]善意的投票的更多相关文章

  1. [洛谷P2057][bzoj1934]善意的投票(最大流)

    题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来 ...

  2. 【BZOJ1934】善意的投票(网络流)

    [BZOJ1934]善意的投票(网络流) 题面 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己 ...

  3. 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割

    [BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...

  4. [bzoj1934/2768][Shoi2007]Vote 善意的投票_最小割

    Vote 善意的投票 bzoj-1934 Shoi-2007 题目大意:题目链接. 注释:略. 想法: 这是最小割的一个比较基本的模型. 我们将所有当前同意的小朋友连向源点,边权为1.不容易的连向汇点 ...

  5. C++之路进阶——bzoj1934(善意的投票)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  6. BZOJ-1934 Vote 善意的投票 最大流+建图

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1551 Solved: 951 [Submit][S ...

  7. bzoj1934: [Shoi2007]Vote 善意的投票

    最大流..建图方式都是玄学啊.. //Dinic是O(n2m)的. #include<cstdio> #include<cstring> #include<cctype& ...

  8. bzoj1934 Vote 善意的投票 最小割(最大匹配)

    题目传送门 题目大意:很多小朋友,每个小朋友都有自己的立场,赞成或者反对,如果投了和自己立场不同的票会得到一个能量.又有很多朋友关系,如果一个人和他的一个朋友投的票不同,也会得到一个能量,现在问,通过 ...

  9. bzoj1934: [Shoi2007]Vote 善意的投票(显然最小割)

    1934: [Shoi2007]Vote 善意的投票 题目:传送门 题解: 明显的不能再明显的最小割... st连同意的,不同意的连ed 朋友之间两两连边(即双向边) 流量都为1... 为啥: 一个人 ...

随机推荐

  1. react之组件数据挂在方式

    1.属性(props) 组件间传值,在React中是通过只读属性 props 来完成数据传递的. props:接受任意的入参,并返回用于描述页面展示内容的 React 元素. import React ...

  2. 极简SpringBoot指南-Chapter02-Spring依赖注入的方式

    仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...

  3. JavaScript有同步任务和异步任务,浏览器是怎么处理的?

    1.在讨论浏览器与JavaScript之前,我们先来简单了解一下进程与线程 进程(process):资源分配的最小单位 进程是应用程序的执行实例,是操作系统进行资源分配和调度的一个独立单位. 线程(t ...

  4. Go语言核心36讲(Go语言基础知识四)--学习笔记

    04 | 程序实体的那些事儿(上) 还记得吗?Go 语言中的程序实体包括变量.常量.函数.结构体和接口. Go 语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予 ...

  5. Polya 定理 学习笔记

    群 群的定义 我们定义,对于一个集合 \(G\) 以及二元运算 \(\times\),如果满足以下四种性质,那我们就称 \((G,\times)\) 为一个群. 1. 封闭性 对于 \(a\in G, ...

  6. 一文了解MySQL性能测试及调优中的死锁处理方法,你还看不明白?

    一文了解MySQL性能测试及调优中的死锁处理方法,你还看不明白? 以下从死锁检测.死锁避免.死锁解决3个方面来探讨如何对MySQL死锁问题进行性能调优. 死锁检测 通过SQL语句查询锁表相关信息: ( ...

  7. Java泛型背后是什么?

    文Java中泛型的应用,让大家更好地理解泛型,以及常说的泛型类型擦除是什么概念,举一个简单的例子,如下: 这里可以看出来在代码编写阶段就已经报错了,不能往string类型的集合中添加int类型的数据. ...

  8. TortoiseGit使用

    TortoiseGit 前言: 其实作为一名学生,还未接触过企业级开发项目,基本都是一个人在本地敲代码,对于项目管理工具使用的并不多,最常用的命令也就是git clone了,hhh: 前些日子了解了一 ...

  9. [对对子队]事后总结Beta

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 要做一个游戏,定义的很清楚,实现出来的效果贴近定义,对用户和场景有清晰描述 我们达到目标了么(原计划的功 ...

  10. [no code][scrum meeting] Alpha 1

    项目 内容 会议时间 2020-04-06 会议主题 团队任务分析与拆解 会议时长 30min 参会人员 全体成员 $( "#cnblogs_post_body" ).catalo ...