HDOJ1083Courses(匈牙利算法)

Xredman posted @ Mar 17, 2010 10:42:18 AM in Algorithm with tags HDU 二分图 匈牙利算法 , 1214 阅读

   正规的二分图匹配,用匈牙利算法实现。

//a group of N students and P courses
//2201302 2010-03-17 21:29:03 Accepted 1083 500MS 332K 1063 B G++ 
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const int P = 102;//the number of course
const int N = 304;//the number of students

bool mat[N][P];
int useif[P];
int link[P];
int p, n;

bool dfs(int cc)
{
	int i;
	for(i = 1; i <= p; i++)
	{
		if(!useif[i] && mat[cc][i])
		{
			useif[i] = true;
			if(link[i] == -1 || dfs(link[i]))
			{
				link[i] = cc;
				return true;
			}
		}
	}
	return false;
}

int MaxMatch()
{
	int i , sum = 0;
	memset(link, -1, sizeof(link));
	for(i = 1; i <= n; i++)
	{
		memset(useif, false, sizeof(useif));
			if(dfs(i))
				sum++;
	}
	return sum;
}

int main()
{
	int T;
	int i, tc, cc;
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d %d", &p, &n);
		memset(mat, false, sizeof(mat));
		for(i = 1; i <= p; i++)
		{
			scanf("%d", &tc);
			while(tc--)
			{
				scanf("%d", &cc);
				mat[cc][i] = true;
			}
		}
		if(MaxMatch() == p)
			printf("YES\n");
		else
			printf("NO\n");
	}
	return 0;
}

 

 






netflix.com/tv8 code 说:
Jul 22, 2023 05:06:39 AM

Netflix bietet eine Reihe von Filmen, Fernsehsendungen und Originalinhalten für ein angemessenes monatliches Abonnement. Netflix kann auf Smart TV, Streaming-Geräten oder modernen Spielsystemen mit Internetverbindung angezeigt werden. netflix.com/tv8 code eingeben Bei einigen Geräten müssen Sie das Gerät aktivieren, bevor Sie sich anmelden. Dies ist üblich bei neuen Geräten oder solchen, die gerade Softwareänderungen erhalten haben.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter