题目链接

P2055 [ZJOI2009]假期的宿舍

解题思路

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

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

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

AC代码

#include<stdio.h>
#include<string.h>
int a[60][60],is[60],leave[60],vis[60],mt[60];
//a[i][j]:i能不能睡j的床
int inv[60],cnt,n;
//inv[i]:第i个要在学校睡觉的人
int dfs(int p,int t){
int i;
for(i=1;i<=n;i++){
if(a[inv[p]][i]&&vis[i]!=t){
vis[i]=t;
if(!mt[i]||dfs(mt[i],t))return mt[i]=p;
}
}
return 0;
}
int main(){
int i,j,t;
scanf("%d",&t);
while(t--){
int ans=0;cnt=0;
memset(vis,0,sizeof(vis));
memset(mt,0,sizeof(mt));
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&is[i]);
for(i=1;i<=n;i++){
scanf("%d",&leave[i]);
if(!is[i]||!leave[i])inv[++cnt]=i;
//如果这人不是学校的或者不回家那就要在学校睡觉
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
scanf("%d",&a[i][j]);
if(i==j&&is[i]&&!leave[i])a[i][j]=1;
//如果在校没回家那可以睡自己的床
if(!is[j])a[i][j]=0;
//如果不是学校的没床可以给别人睡
}
for(i=1;i<=cnt;i++)
if(dfs(i,i))ans++;
else break;
if(ans!=cnt)printf("T_T\n");
else printf("^_^\n");
}
return 0;
}

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. Linux-用户/用户组身份提权

    sudo 身份提权(更安全) su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全. 为了改进这个问题,从而产生了su ...

  2. springboot demo(一)快速开始

    快速入门 maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.26以及一些工程基本信息,点击" ...

  3. SpringBoot进阶教程(七十)SkyWalking

    流行的APM(Application Performance Management工具有很多,比如Cat.Zipkin.Pinpoint.SkyWalking.优秀的监控工具还有很多,其它比如还有za ...

  4. PyCharm 中文 字符 python 报错 的 完美 解决方案!

    PyCharm 中文 字符 python 报错 的 完美 解决方案! #_*_ coding:utf-8_*_ https://www.python.org/dev/peps/pep-0263/ 到p ...

  5. React Native & Security

    React Native & Security https://reactnative.dev/docs/security React Native blogs https://reactna ...

  6. SEO & JSON-LD & structured-data

    SEO & JSON-LD & structured-data script type="application/ld+json" script type=&quo ...

  7. JDK环境解析,安装和目的

    目录 1. JDK环境解析 1.1 JVM 1.2 JRE 1.3 JDK 2. JDK安装 2.1 为什么使用JDK8 2.1.1 更新 2.1.2 稳定 2.1.3 需求 2.2 安装JDK 2. ...

  8. 数据归一化 scikit-learn中的Scaler

    1 import numpy as np 2 from sklearn import datasets 3 4 # 获取数据 5 iris = datasets.load_iris() 6 X = i ...

  9. Typescript快速入门

    目录 什么是Typescript 为什么学习Typescript 快速搭建开发环境 1.安装node.js 2.使用node自带的npm安装Typescript编译器 3.配置vscode编辑环境 4 ...

  10. 移动端时间回显iphone出现的问题

    new Date(item.startTime.replace(/-/g, '/') dateFormat('hh:mm', new Date(item.startTime.replace(/-/g, ...