poj 1469(匈牙利算法)
2012-08-23 09:43
190 查看
题意 n个学生去p个课堂,每一个学生都有自己的课堂,并且每个学生只能去一个课堂,题目要求能够安排每一个课堂都有人吗?输入数据的第一行是测试数据的个数,每组测试数据的开始分别是p和n,接着p行,每行的开始是这个课堂的学生人数m,接着m个数代表该课堂的学生编号,对于输出,如果该组数据能够这样安排就输出YES,否则输出NO。例如,对于第一组数据明显可以这样匹配,3-3,2-2,1-1,而对于第二组数据则无法找到匹配方案,
#include<stdio.h>
#define N 400
int map
,use
,link
,m,n;
void initial()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
map[i][j]=0;
link[i]=-1;
}
}
bool dfs(int x){
int i,j;
for(i=1;i<=m;i++){
if (use[i]==0 && map[x][i]) {
use[i]=1;
j=link[i];
link[i]=x;
if (j==-1|| dfs(j))
{
return true;
}
link[i]=j;
}
}
return false;
}
int hungary()
{
int num=0;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
use[j]=0;
if (dfs(i))
num++;
}
return num;
}
int main()
{
int t,number,i,j,v,x;
scanf("%d",&t);
while(t--)
{
initial();
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&number);
for(j=1;j<=number;j++)
{
scanf("%d",&v);
map[i][v]=1;
}
}
x=hungary();
if(x==n)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
#include<stdio.h>
#define N 400
int map
,use
,link
,m,n;
void initial()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
map[i][j]=0;
link[i]=-1;
}
}
bool dfs(int x){
int i,j;
for(i=1;i<=m;i++){
if (use[i]==0 && map[x][i]) {
use[i]=1;
j=link[i];
link[i]=x;
if (j==-1|| dfs(j))
{
return true;
}
link[i]=j;
}
}
return false;
}
int hungary()
{
int num=0;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
use[j]=0;
if (dfs(i))
num++;
}
return num;
}
int main()
{
int t,number,i,j,v,x;
scanf("%d",&t);
while(t--)
{
initial();
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&number);
for(j=1;j<=number;j++)
{
scanf("%d",&v);
map[i][v]=1;
}
}
x=hungary();
if(x==n)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
相关文章推荐
- POJ1469(匈牙利算法求二分图最大匹配)
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
- POJ:1469 COURSES(匈牙利算法模版题)
- poj_1469 COURSES匈牙利算法
- poj 1469 COURSES 匈牙利算法
- poj 1469 二分匹配——匈牙利算法
- poj1469 COURSES(匈牙利算法)(解题报告)
- Poj1469_匈牙利算法_最大二分匹配
- poj1469 二分图匹配,匈牙利算法的模型
- Poj1469_匈牙利算法_最大二分匹配
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- 【二分图最大匹配】【匈牙利算法】poj1469 COURSES && poj2446 Chessboard
- POJ1469[COURSES] 二分图最大匹配 匈牙利算法
- POJ 1469-COURSES(二分图匹配入门-匈牙利算法)
- poj 1469(简单匈牙利算法)
- poj题目1469 COURSES (二分图匹配,匈牙利算法)
- poj 1469 COURSES(匈牙利算法模板)
- poj-1469,1274 二分图匈牙利算法
- POJ-1469 COURSES ( 匈牙利算法 dfs + bfs )
- 匈牙利算法 (poj1422-Air Raid,poj1469-COURSES)