Courses HDU1083 -二分图匹配
来源:互联网 发布:java时间格式化DD 编辑:程序博客网 时间:2024/05/01 16:19
题意: p节课程,n个学生。询问是否能找到p个课代表,每个学生只能当一门课的课代表。
思路: 匈牙利裸匹配
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include <vector>#include<algorithm>using namespace std;const int maxn=15005;int n,m;int pre[maxn];//保存各点的匹配点int vis[maxn]; vector<int> vec[maxn];int find(int u)//判断是否存在增广路,存在返回1{ int i,v; for(i=0;i<vec[u].size();i++) { v=vec[u][i]; if(vis[v])continue; vis[v]=1; if(pre[v]==-1||find(pre[v]))//-1找到未盖点,find是增广路。 { pre[v]=u;//匹配边和非匹配边交换 return 1; } } return 0;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); int u,v; memset(pre,-1,sizeof(pre)); for(int i=1;i<=n+m;i++) vec[i].clear(); for(int i=1;i<=m;i++) { int k; scanf("%d",&k); for(int j=1;j<=k;j++) { scanf("%d",&v); v=v+m; vec[v].push_back(i); vec[i].push_back(v); } } int ans=0; for(int i=1;i<=n+m;i++) { memset(vis,0,sizeof(vis)); ans+=find(i); } if(ans==m*2 ) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- Courses HDU1083 -二分图匹配
- HDU1083 Courses(二分图匹配)
- 【二分匹配】 hdu1083 Courses
- 【二分匹配】HDU1083-Courses
- HDU1083 Courses 二分匹配
- Courses HDU1083(二分图的匹配)
- hdu1083 Courses ( 二分图最大匹配)
- 【二分图匹配】HDU1083-Courses【模板题】
- HDU1083--Courses(二分图最大匹配)
- HDU1083---Courses (二分图匹配)
- hdu1083 Courses(二分匹配)
- hdu1083二分图匹配
- hdu1083(二分图匹配)
- hdu1083【二分图】【最大匹配】
- Courses(二分图匹配)
- HDU1083(二分图+最大匹配+匈牙利算法)
- hdu1083培训班 ~~二分图最大匹配
- hdu1083二分匹配基础
- Android studio 混淆打包安装后报错NullPointerException int java.util.List.size()
- Boolean转String
- 商城项目实战 | 3.1 AndroidImageSlider 实现炫酷轮播广告
- 会话机制
- NB-IOT与物联网
- Courses HDU1083 -二分图匹配
- jQuery、JS调用iframe父窗口与子窗口元素的方法
- Netty教程-ServerBootstrap
- 使用Xposed拦截应用通知的一直简单实现
- IIS8.5,在调用RSA加密时报错的解决方法
- iOS原生与H5交互开发
- 对栈的各种操作的实现(C语言)
- Path路径
- C/C++创建和删除文件夹操作