当前位置: 首页 > news >正文

[2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票

一看数据范围题意猜测是网络流。

于是开始建模。

我们建立源点\(S\)和汇点\(T\),将\(S\)向想要睡觉的小朋友连容量为1的边,将不想睡觉的小朋友向\(T\),连容量为1的边,朋友之间连流量为1的双向边。

那么我们需要使图被分为两个互不连通的集合,一个和\(S\)连通,表示最终投了睡觉的小朋友;另一个和\(T\)连通,表示最终投了不睡的小朋友。

那么最小冲突次数就是最小割了。

为什么呢?

可以把一条边看成一次可能的冲突,割断了就是接受了一次冲突,让一这对朋友冲突之后,两个小朋友都可以不用考虑这个朋友关系,这个限制就不存在了,也就是边被割断了。

code:

#include<bits/stdc++.h>
#define REV(x) (x&1?x+1:x-1)
#define S 0
#define T n+1
using namespace std;
struct edge{
    int t,f,nxt;
}e[200010];
int n,m,u,v,t,cnt,be[310],dep[310],vis[310];
queue<int>q;
void add(int x,int y,int f){
    e[++cnt].t=y,e[cnt].f=f,e[cnt].nxt=be[x],be[x]=cnt;
}
void Add(int x,int y,int f){
    add(x,y,f),add(y,x,0);
}
bool bfs(){
    for(int i=1;i<=T;++i)dep[i]=0;
    dep[S]=1,q.push(S);
    while(!q.empty()){
        t=q.front(),q.pop();
        for(int i=be[t];i;i=e[i].nxt)!dep[e[i].t]&&e[i].f?q.push(e[i].t),dep[e[i].t]=dep[t]+1:0;
    }
    return dep[T];
}
int dfs(int x,int nf){
    if(x==T)return nf;
    vis[x]=1;
    int tf,uf=0;
    for(int i=be[x];i&&nf>uf;i=e[i].nxt)!vis[e[i].t]&&dep[e[i].t]==dep[x]+1&&e[i].f?tf=dfs(e[i].t,min(e[i].f,nf-uf)),uf+=tf,e[i].f-=tf,e[REV(i)].f+=tf:0;
    return uf;
}
int Dinic(){
    int ans=0;
    while(bfs())ans+=dfs(S,1e9);
    return ans;
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)scanf("%d",&t),t?Add(S,i,1):Add(i,T,1);
    for(int i=1;i<=m;++i)scanf("%d%d",&u,&v),Add(u,v,1),Add(v,u,1);
    printf("%d",Dinic());
    return 0;
}

转载于:https://www.cnblogs.com/xryjr233/p/BZOJ1934.html

相关文章:

  • java shutdownhook
  • poj_3468,线段树成段更新
  • 捧上天的AI落地困难,“ 不懂变通”的华为云如何应付?
  • 二叉树的锯齿形层次遍历
  • LINUX下禁止root用户远程登录
  • 项目中常用的19条MySQL优化
  • linux系统优化
  • Java版人脸识别SDK 虹软arcface (demo)
  • 一张图告诉你,只会jQuery还不够!
  • Istio 1.1 版本发布,性能和可用性提升
  • 桥牌笔记:Skill Level 4 D8
  • datax同步MySQL数据到mongodb
  • zephir的安装
  • jav核心(十四):集合类型操作:Collection、List、Set;Map集合;Iterator迭代器
  • 赋值,copy和deepcopy
  • Google 是如何开发 Web 框架的
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript中的对象个人分享
  • js继承的实现方法
  • JS专题之继承
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Redis 懒删除(lazy free)简史
  • springboot_database项目介绍
  • SQLServer之创建显式事务
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue数据传递--我有特殊的实现技巧
  • 解析 Webpack中import、require、按需加载的执行过程
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • kubernetes资源对象--ingress
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #{}和${}的区别是什么 -- java面试
  • #pragam once 和 #ifndef 预编译头
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (003)SlickEdit Unity的补全
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (算法)Game
  • .NET gRPC 和RESTful简单对比
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET处理HTTP请求
  • .NET企业级应用架构设计系列之技术选型
  • .NET企业级应用架构设计系列之开场白
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .net中生成excel后调整宽度
  • .net中我喜欢的两种验证码
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [20190416]完善shared latch测试脚本2.txt
  • [C\C++]读入优化【技巧】
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理