首页 > 其他 > 详细

POJ3041:Asteroids【二分图匹配】

时间:2014-10-05 14:28:58      阅读:236      评论:0      收藏:0      [点我收藏+]

二分图的最大匹配=最小顶点覆盖(Konig定理)=最大独立集的补集最大匹配经典的三种模型  这题就是最小顶点覆盖,顺便这题留给我的经验就是调试的时候一定要细心细心再细心对模板的各个细节都要熟!!

#include<cstdio>

#include<string.h>

#include<iostream>

using namespace std;

const int maxn=10005;

intn,map[maxn][maxn]={{0}},match[maxn]={0},visit[maxn]={0},x,y,ans=0,k;

int dfs(int t)

{

   for (int i=1;i<=n;i++)if (map[t][i]==1 && visit[i]==0)

    {

       visit[i]=1;

       if (match[i]==-1 ||dfs(match[i])==1)

       {

           match[i]=t;

           return 1;

       }

    }

   return 0;

}

int main()

{

   scanf("%d%d",&n,&k);

   for(int i=1;i<=k;i++)

    {

       scanf("%d%d",&x,&y);

       map[x][y]=1;

    }

   memset(match,255,sizeof(match));

   for(int i=1;i<=n;i++)

    {

           memset(visit,0,sizeof(visit));

           if (dfs(i)==1)ans++;

    }

   printf("%d\n",ans);

   return 0;

}

POJ3041:Asteroids【二分图匹配】

原文:http://www.cnblogs.com/philippica/p/4006963.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!