poj 1469 zoj 1140 二部图模板题
来源:互联网 发布:mac版百度网盘 编辑:程序博客网 时间:2024/05/02 16:13
http://poj.org/problem?id=1469
水题,直接套模版,注意学生可以见习0门课程,所以必须p匹配n而不是n匹配p。检查匹配数是不是p即可。
还有一点,今天才发现,二部图 建图的时候,具体看下面注释吧...
贴代码
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 305int p,n;int mat[N][N];int cx[N],cy[N];bool mk[N];int path(int u){ int v; for(v=1;v<=n;v++) { if(mat[u][v]&&!mk[v]) { mk[v]=1; if(cy[v]==-1||path(cy[v])) { cx[u]=v; cy[v]=u; return 1; } } } return 0;}int MaxMatch(){ int res=0,i; memset(cx,-1,sizeof(cx)); memset(cy,-1,sizeof(cy)); for(i=1;i<=p;i++) { if(cx[i]==-1) { memset(mk,0,sizeof(mk)); res+=path(i); } } return res;}int main(){ //freopen("poj 1469.txt","r",stdin); int i,j,ncase,num,v,ans; scanf("%d",&ncase); while(ncase--) { memset(mat,0,sizeof(mat)); scanf("%d%d",&p,&n); for(i=1;i<=p;i++) { scanf("%d",&num); for(j=0;j<num;j++) { scanf("%d",&v); mat[i][v]=1; /*这里不是mat[i][v]=mat[v][i]=1;要和无向图建图区分啊, 无向图节点编号1,2,3...而二部图,分两块,1,2,3... 1,2,3... 或者说邻接矩阵里mat[i][j],i,j有固定的属于哪部分的意义*/ } } ans=0; ans=MaxMatch(); if(ans==p)printf("YES\n"); else printf("NO\n"); } return 0;}
- poj 1469 zoj 1140 二部图模板题
- poj 1469 COURSES(简单)(二部图匹配 DFS)
- POJ 2446 : Chessboard(二部图算法)
- 二部图
- zoj 1140 || poj 1469 Courses
- poj.3041--二部图的最小定点覆盖
- poj 1698 二部图多重最大匹配(拍电影)
- poj 2125 二部图最小点权覆盖
- poj 1112 二部图判定+背包(team them up)
- POJ **** Butterfly(二部图BFS遍历染色)
- Poj 1144 Zoj 1311 求割点 模板
- POJ 1469 && ZOJ 1140 --COURSES【二分图 && 最大匹配】
- 二部图(染色法判断二部图)
- uva 10122 Mysterious Mountain and ZOJ 1231 Mysterious Mountain (二分+二部图最大匹配)
- 二部图,最大匹配
- 二部图匹配问题
- 二部图总结
- 二部图判断
- SVN强制填写日志
- javascript 动态创建表格
- std::string之间的转化
- 数据结构
- Spring配置Quartz样例
- poj 1469 zoj 1140 二部图模板题
- SPOJ 10606. Balanced Numbers (数位DP,4级)
- 解读IIS架构
- 百度地图如何计算两点之间距离
- 蛇年七月十八市区游记
- Ubuntu里面WTK无法播放声音并提示/dev/dsp找不到的解决办法
- connection is denied by policyframe[return code:8] nginx 问题解决
- hdu1879 继续畅通工程 (prim)
- MY CUHK!!!