传送门1
传送门2
写在前面:蛤蛤
思路:
(要拆点啊!naive的我一开始没拆点竟然还过了4个点)
每个人拆成两个点,一个在源点那里,一个在汇点那里
1.s连本校学生,容量为1的边(发床了)
2.没回家的本校学生和外面的人往t连容量为1的边(需要床睡觉)
3.认识的人(包括自己的点)之间连容量为1的边
跑出最大流,判断其是否与需要的床数相等即可
注意:拆点啊!拆点
代码:

#include<bits/stdc++.h>
using namespace std;
int n,tot,s,t,T;
int first[125],dis[125];
bool a[65];
struct edge
{int v,w,next;
}e[100000];
void add(int x,int y,int z){e[++tot]=(edge){y,z,first[x]};first[x]=tot;}
queue<int>q;
bool bfs()
{memset(dis,0,sizeof(dis));q.push(s);dis[s]=1;while (!q.empty()){int k=q.front();q.pop();for (int i=first[k];i;i=e[i].next)if(!dis[e[i].v]&&e[i].w)q.push(e[i].v),dis[e[i].v]=dis[k]+1;}return dis[t];
}
int dfs(int x,int maxn)
{if (x==t) return maxn;int used=0;for (int i=first[x];i;i=e[i].next)if(dis[e[i].v]==dis[x]+1){int k=dfs(e[i].v,min(maxn-used,e[i].w));e[i].w-=k;e[i^1].w+=k;used+=k;if (used==maxn) return maxn;}if (!used) dis[x]=0;return used;
}
main()
{int x;scanf("%d",&T);while (T--){memset(first,0,sizeof(first));scanf("%d",&n);int ans=n;t=2*n+1;tot=1;for (int i=1;i<=n;i++){scanf("%d",a+i);if (a[i])add(s,i,1),add(i,s,0);else add(i+n,t,1),add(t,i+n,0);}for (int i=1;i<=n;i++){scanf("%d",&x);if (a[i])if (!x) add(i+n,t,1),add(t,i+n,0);else ans--;}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){scanf("%d",&x);if (x||i==j) add(i,j+n,1),add(j+n,i,0);}while (bfs()) ans-=dfs(s,0x7fffff);if (ans) puts("T_T");else puts("^_^");}
}

【BZOJ1433】【codevs2347】假期的宿舍,最大流相关推荐

  1. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2375  Solved: 1005 [Submit][S ...

  2. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配

    题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...

  3. bzoj1433: [ZJOI2009]假期的宿舍

    一道匈牙利的裸题,将床和人建边,纯属复习模版了(然而就是写错了) 注意一下0和1的表示. #include<cstdio> #include<cstring> using na ...

  4. BZOJ1433[ZJOI2009]假期的宿舍——二分图最大匹配

    题目描述 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能睡和自己直接认 ...

  5. 二分图 洛谷P2055 [ZJOI2009]假期的宿舍

    [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 ...

  6. 【bzoj1433】[ZJOI2009]假期的宿舍

    按要求连边,跑匈牙利 #include<algorithm> #include<iostream> #include<cstdlib> #include<cs ...

  7. 洛谷P2055 [ZJOI2009]假期的宿舍 题解

    题目链接: https://www.luogu.org/problemnew/show/P2055 分析: 这道题比较简单,二分图的练习题(当然最大流同理). 易得我们可以将人放在一侧,床放在一侧. ...

  8. 【BZOJ 1433】[ZJOI2009]假期的宿舍

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把每个人都分为左边和右边两个人 xi,yi 如果第i个人不回家或者是外校学生 那么它可以和他认识的人连一条容量为1的边(前提是这个认 ...

  9. P2055 [ZJOI2009]假期的宿舍

    有点烧脑... 这道题是求二分图完美匹配.没看请题意还不知道是求完美匹配,结果爆零. 人一共分三种: 在校学生 && 回家.这类人拥有一个床,但是不睡. 在校学生 && ...

最新文章

  1. wxPython_Phoenix在线安装
  2. stm32 USART_IT_IDLE中断 一帧数据
  3. silverlight for olap version milestone 07 updated!
  4. Arduino 控制超声波测距模块
  5. vs2008打开vs2010工程项目
  6. ViewPager 无限循环遇到的坑 viewpager.setOffscreenPageLimit(2);
  7. 第十一章:WebSocket
  8. SDWebImage点滴
  9. 微信已经老了,头条永远年轻
  10. c3p0与dbcp的异同
  11. 网页教程:为网站的Web Robot 设计路标
  12. 概率图模型--马尔可夫随机场
  13. java写一个android程序_【Android开发笔记】3.编写第一个Android程序
  14. vue PC 端使用腾讯地图定位
  15. P8339-[AHOI2022]钥匙【虚树,扫描线】
  16. 推荐系统中的双塔模型
  17. jupyter-notebook 以yarn模式运行出现的问题及解决
  18. 基于beaglebone的rtems4.12源码编译生成image镜像并烧入sd卡
  19. html 设置min height,CSS中min-height使用技巧
  20. 近视手术?一个医学的阴谋?

热门文章

  1. 关于token你需要知道的
  2. 目不识丁的我使用Python编写汉字注音小工具
  3. 补习系列(19)-springboot JPA + PostGreSQL
  4. 【云速建站】页面产品维护简述
  5. mint linux qq,linuxmint系统下安装QQ
  6. php 不能运行,PHP 环境不能正常运行
  7. pandas保存为csv格式文件
  8. 零基础机器学习(2)-你的第一个Python程序
  9. 从零开始学Pytorch(九)之批量归一化和残差网络
  10. 从零开始学keras之使用 LSTM 生成文本