HDOJ 1179 - Ollivanders: Makers of Fine Wands since 382 BC. 水二分图.阅读理解..

来源:互联网 发布:ubuntu无法复制粘贴 编辑:程序博客网 时间:2024/05/20 13:39

              题意:

                       每个wand对应了一些wizard..问最多能有多少对配对成功

              题解

                       裸二分图最大匹配..


Program:

#include<iostream>#include<stdio.h>#include<string.h>#include<cmath>#include<queue>#include<stack>#include<set>#include<time.h>#include<map>#include<algorithm>#define ll long long#define eps 1e-5#define oo 1<<30#define pi acos(-1.0)#define MAXN 105using namespace std;  int n,m,match[MAXN];bool g[MAXN][MAXN],used[MAXN];bool dfs(int x){       int i;       for (i=1;i<=m;i++)          if (!used[i] && g[x][i])          {                 used[i]=true;                 if (!match[i] || dfs(match[i]))                 {                        match[i]=x;                        return true;                 }            }       return false;}int getmax(){       int num=0;       memset(match,0,sizeof(match));       for (int i=1;i<=n;i++)       {              memset(used,false,sizeof(used));              num+=dfs(i);       }       return num;}int main(){              int i,num,x;              while (~scanf("%d%d",&m,&n))       {               memset(g,false,sizeof(g));               for (i=1;i<=n;i++)               {                      scanf("%d",&num);                      while (num--)                      {                             scanf("%d",&x);                             g[i][x]=true;                      }               }               printf("%d\n",getmax());       }             return 0;}


原创粉丝点击