HDU 2444 The Accomodation of Students 二分图匹配
HDU 2444 The Accomodation of Students 二分图匹配
题目来源:
- HDU
题意:
给出学生数n和关系数m,接下来给出m个关系。
要求将学生分成两部分,每一部分不能有互相认识的人。做不到就输出"No"。
若上一步满足,则将学生配对,要求这两个学生互相认识。
题解:
一个难点是建图,要求只是满足每一部分不能有认识的就好。
建完图直接二分图最大匹配输出结果就好。
代码:
#include <bits/stdc++.h>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int n,m;
const int maxn=200+10;
vector<pair<int,int> >mp;
int G[maxn][maxn];
int matched[maxn];
int vi[maxn];
int l[maxn],r[maxn];int dfs(int x)
{for(int i=0;i<maxn;i++){if(G[x][i] && !vi[i]){vi[i]=1;if(matched[i]==-1||dfs(matched[i])){matched[x]=i;matched[i]=x;return 1;}}}return 0;
}int solve()
{int ans=0;memset(matched,-1,sizeof(matched));for(int i=0;i<maxn;i++){memset(vi,0,sizeof(vi));ans+=dfs(i);}return ans;
}int main()
{
#ifndef ONLINE_JUDGE//freopen("3.in","r",stdin);//freopen("3.out","w",stdout);
#endifint a,b;bool flag;while(cin >> n >> m){flag=false;memset(l,0,sizeof(l));memset(r,0,sizeof(r));mp.clear();memset(G,0,sizeof(G));for(int i=0;i<m;i++){cin >> a>> b;mp.push_back(make_pair(a,b));}for(int i=0;i<m;i++){if((l[mp[i].first] && l[mp[i].second])||(r[mp[i].first]&& r[mp[i].second])){flag=1;break;}l[mp[i].first]=1;r[mp[i].second]=1;G[mp[i].first][mp[i].second]=1;}if(flag)cout <<"No"<<endl;else{cout <<solve()<<endl;}}return 0;
}
转载于:https://www.cnblogs.com/Combustible-ice/p/5894042.html
HDU 2444 The Accomodation of Students 二分图匹配相关推荐
- HDU - 2444 The Accomodation of Students(二分图判断+二分图最大匹配)
题目链接:点击查看 题目大意:给出n个学生,他们之间有m个认识关系,但认识关系不具有传递性,比如A认识B,B认识C,A不一定认识C,现在给出认识关系,先判断是否能够将所有学生分为两个集合A和B中去,集 ...
- HDU 2444 The Accomodation of Students (二部图+染色)
The Accomodation of Students Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Ja ...
- HDU——2444 The Accomodation of Students
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)
题意: 题意: 有n个人,m对人相互认识: 问能否分成两个组,组内任意两个人之间不认识: 若不能,则输出No: 若能,则相互认识的两个人一间房,求最多需要几间房: 给出一些学生的认识情况,比如A和B认 ...
- HDU 2444 The Accomodation of Students
首先是要构造二分图,然后二分图的最大匹配. 还有没完全证明过我的方法的正确性,但是AC了..... #include<cstdio> #include<cstring> #in ...
- HDU 2063 过山车 (二分图匹配之匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 【HDU 1150】Machine Schedule(二分图匹配)
机器的不同模式为点,对于每个job,建两条边 A机器需要的模式<->B机器需要的模式. 问题转化为最小点覆盖,然后用二分图的最小点覆盖==最大匹配,用匈牙利算法解. #include &l ...
- 【HDU - 2444】The Accomodation of Students(二分图判断 + 匈牙利算法求最大匹配)
题干: There are a group of students. Some of them may know each other, while others don't. For example ...
- 【 HDU - 5093】Battle ships(匈牙利算法,二分图匹配)
题干: Dear contestant, now you are an excellent navy commander, who is responsible of a tough mission ...
最新文章
- sql2000 转sql2008
- 让页面只能在微信浏览器里访问
- Hibernate 笔记1
- php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...
- mdkstc系列器件支持包下载_Find X2系列 Android 11 Beta1 测试版发布
- IDEA查找接口实现类及快速实现接口的方法及常用快捷键
- Linux 命令之 loginctl -- 查看系统当前登录的用户
- 【原】docker部署单节点consul
- mysql limit offset很大_MySQL查询中LIMIT的大offset导致性能低下浅析
- 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
- Kotlin 官方参考文档 中文版_kotlin-reference-chinese.pdf
- 中小学生计算机编程笔试,计算机编程笔试题
- ubuntu 16.04和window双系统 启动项顺序修改
- 爆款制作获1200w播放,B站UP主+品牌如何迈入2023
- 使用 istringtream 注意其状态
- 理论+实操:K8S的pod健康检查——live、ready、startup
- idea+git合并分支解决冲突及详解
- Java如何在main方法中实例化内部类对象
- QQ聊天功能在局域网中的实现
- 推荐系统之深度兴趣进化网络DIEN