题目链接

P2055 [ZJOI2009]假期的宿舍

解题思路

因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路。

\(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需要根据具体情况在读入的时候适当调整。

\(inv[i]\)表示第\(i\)个需要在学校睡觉的人(可能是在校学生也可能是校外人员)

AC代码

  1. #include<stdio.h>
  2. #include<string.h>
  3. int a[60][60],is[60],leave[60],vis[60],mt[60];
  4. //a[i][j]:i能不能睡j的床
  5. int inv[60],cnt,n;
  6. //inv[i]:第i个要在学校睡觉的人
  7. int dfs(int p,int t){
  8. int i;
  9. for(i=1;i<=n;i++){
  10. if(a[inv[p]][i]&&vis[i]!=t){
  11. vis[i]=t;
  12. if(!mt[i]||dfs(mt[i],t))return mt[i]=p;
  13. }
  14. }
  15. return 0;
  16. }
  17. int main(){
  18. int i,j,t;
  19. scanf("%d",&t);
  20. while(t--){
  21. int ans=0;cnt=0;
  22. memset(vis,0,sizeof(vis));
  23. memset(mt,0,sizeof(mt));
  24. scanf("%d",&n);
  25. for(i=1;i<=n;i++)
  26. scanf("%d",&is[i]);
  27. for(i=1;i<=n;i++){
  28. scanf("%d",&leave[i]);
  29. if(!is[i]||!leave[i])inv[++cnt]=i;
  30. //如果这人不是学校的或者不回家那就要在学校睡觉
  31. }
  32. for(i=1;i<=n;i++)
  33. for(j=1;j<=n;j++){
  34. scanf("%d",&a[i][j]);
  35. if(i==j&&is[i]&&!leave[i])a[i][j]=1;
  36. //如果在校没回家那可以睡自己的床
  37. if(!is[j])a[i][j]=0;
  38. //如果不是学校的没床可以给别人睡
  39. }
  40. for(i=1;i<=cnt;i++)
  41. if(dfs(i,i))ans++;
  42. else break;
  43. if(ans!=cnt)printf("T_T\n");
  44. else printf("^_^\n");
  45. }
  46. return 0;
  47. }

P2055 [ZJOI2009]假期的宿舍 题解(二分图)的更多相关文章

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

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

  2. P2055 [ZJOI2009]假期的宿舍【二分图/最大流】

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

  3. 洛谷P2055 [ZJOI2009]假期的宿舍

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

  4. 洛谷——P2055 [ZJOI2009]假期的宿舍

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

  5. BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配

    BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配 题意: 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回 ...

  6. 洛谷P2055 [ZJOI2009]假期的宿舍 [二分图最大匹配]

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

  7. 【题解】 [ZJOI2009]假期的宿舍 (二分图匹配)

    懒得复制题面,戳我 Solution: 处理出床位.要留校的人(注意来访问的人一定住校),和人与人的关系(连边) 再接着就是二分图. 注意的就是连向的人必须是有床位的 还要注意的就是只用判断住校的同学 ...

  8. P2055 [ZJOI2009]假期的宿舍[二分图匹配]

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

  9. 洛谷 P2055 [ZJOI2009]假期的宿舍

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

随机推荐

  1. 僵尸进程 & 孤儿进程

    参考博文 基本概念 僵尸进程:是所有进程都会进入的一种进程状态,子进程退出,而父进程并没有调用 wait() 或 waitpid() 获取子进程的状态信息,那么子进程的 PID 和 进程描述符 等资源 ...

  2. oslab oranges 一个操作系统的实现 实验五 让操作系统走进保护模式

    实验目的: • 如何从软盘读取并加载一个Loader程序到操作 系统,然后转交系统控制权 • 对应章节:第四章 实验内容: 1. 向软盘镜像文件写入一个你指定的文件,手 工读取在磁盘中的信息 2. 在 ...

  3. Linux 网络协议栈开发基础篇—— 网桥br0

    一.桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口"连接"起来.其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去.以使得网口之间的报文能够互相转发. 交换机 ...

  4. 2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?

    任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...

  5. element-ui UI 组件库剖析

    element-ui UI 组件库剖析 /* Automatically generated by './build/bin/build-entry.js' */ https://github.com ...

  6. RESTful 架构 && RESTful API

    RESTful 架构 && RESTful API REpresentational State Transfer (REST) 具象状态传输https://en.wikipedia. ...

  7. ES2020 All in One

    ES2020 All in One ES2020 new features / ES11 ES2020 中的10个新功能 1. BigInt BigInt是JavaScript中最令人期待的功能之一, ...

  8. TS type different String / string

    TS type different String / string String / string https://stackoverflow.com/questions/14727044/types ...

  9. c++ 获取当前程序的主模块句柄

    char text[2014]; GetModuleBaseNameA(GetCurrentProcess(), 0, text, 1024); HMODULE hModule = GetModule ...

  10. nodejs 创建tcp/udp服务器和客户端

    TCP server // https://nodejs.org/api/net.html const net = require("net"); // https://nodej ...