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 二分图匹配相关推荐

  1. HDU - 2444 The Accomodation of Students(二分图判断+二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个学生,他们之间有m个认识关系,但认识关系不具有传递性,比如A认识B,B认识C,A不一定认识C,现在给出认识关系,先判断是否能够将所有学生分为两个集合A和B中去,集 ...

  2. HDU 2444 The Accomodation of Students (二部图+染色)

    The Accomodation of Students Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Ja ...

  3. HDU——2444 The Accomodation of Students

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  4. HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)

    题意: 题意: 有n个人,m对人相互认识: 问能否分成两个组,组内任意两个人之间不认识: 若不能,则输出No: 若能,则相互认识的两个人一间房,求最多需要几间房: 给出一些学生的认识情况,比如A和B认 ...

  5. HDU 2444 The Accomodation of Students

    首先是要构造二分图,然后二分图的最大匹配. 还有没完全证明过我的方法的正确性,但是AC了..... #include<cstdio> #include<cstring> #in ...

  6. HDU 2063 过山车 (二分图匹配之匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. 【HDU 1150】Machine Schedule(二分图匹配)

    机器的不同模式为点,对于每个job,建两条边 A机器需要的模式<->B机器需要的模式. 问题转化为最小点覆盖,然后用二分图的最小点覆盖==最大匹配,用匈牙利算法解. #include &l ...

  8. 【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 ...

  9. 【 HDU - 5093】Battle ships(匈牙利算法,二分图匹配)

    题干: Dear contestant, now you are an excellent navy commander, who is responsible of a tough mission ...

最新文章

  1. sql2000 转sql2008
  2. 让页面只能在微信浏览器里访问
  3. Hibernate 笔记1
  4. php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...
  5. mdkstc系列器件支持包下载_Find X2系列 Android 11 Beta1 测试版发布
  6. IDEA查找接口实现类及快速实现接口的方法及常用快捷键
  7. Linux 命令之 loginctl -- 查看系统当前登录的用户
  8. 【原】docker部署单节点consul
  9. mysql limit offset很大_MySQL查询中LIMIT的大offset导致性能低下浅析
  10. 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
  11. Kotlin 官方参考文档 中文版_kotlin-reference-chinese.pdf
  12. 中小学生计算机编程笔试,计算机编程笔试题
  13. ubuntu 16.04和window双系统 启动项顺序修改
  14. 爆款制作获1200w播放,B站UP主+品牌如何迈入2023
  15. 使用 istringtream 注意其状态
  16. 理论+实操:K8S的pod健康检查——live、ready、startup
  17. idea+git合并分支解决冲突及详解
  18. Java如何在main方法中实例化内部类对象
  19. QQ聊天功能在局域网中的实现
  20. 推荐系统之深度兴趣进化网络DIEN

热门文章

  1. 如何随机选取1000个关键字
  2. C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法 (转)
  3. 台湾邮政历史常设展重新开幕
  4. mysql5.7主从复制遇到的坑
  5. 公共交通WiFi末路?公交WiFi重挫 地铁WiFi承受盈利压力
  6. oneuijs/You-Dont-Need-jQuery
  7. XAMPP on Mac 组态 Virual Host
  8. 在Linux中创建静态库.a和动态库.so
  9. jquery 操作日期、星期、元素的追加
  10. 微博平台StatusNet研究(4):快速安装