hdu2063二分图

来源:互联网 发布:淘宝卖家一个好评几分 编辑:程序博客网 时间:2024/05/18 09:13

思路:最裸二分图,没有之一。。。。

题目链接

/*****************************************Author      :Crazy_AC(JamesQi)Time        :2015File Name   :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;#define MEM(a,b) memset(a,b,sizeof a)#define pk push_backtemplate<class T> inline T Get_Max(const T&a,const T&b){return a < b?b:a;}template<class T> inline T Get_Min(const T&a,const T&b){return a < b?a:b;}typedef long long ll;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;const int maxn = 520;int link[maxn];int gg[maxn][maxn];bool vis[maxn];int n,vN,uN;bool Search_P(int u){for (int i = 1;i <= vN;++i){if (gg[u][i] && !vis[i]){vis[i] = true;if (link[i] == -1 || Search_P(link[i])){link[i] = u;return true;}}}return false;}inline int Hungary(){int ret = 0;MEM(link, -1);for (int i = 1;i <= uN;++i){MEM(vis, false);if (Search_P(i)) ret++;}return ret;}int main(){// ios::sync_with_stdio(false);// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);int k;while(scanf("%d",&k) && k){scanf("%d%d",&uN,&vN);MEM(gg, 0);while(k--){int a,b;scanf("%d%d",&a,&b);gg[a][b] = 1;}printf("%d\n",Hungary());}return 0;}


0 0
原创粉丝点击