poj 3041Asteroids 二分图匹配

    xiaoxiao2021-03-25  75

    #include<stdio.h> #define MAX_N 500+16 int map[MAX_N][MAX_N]; int visit[10000]; int match[10000]; int k,n; int path(int start) {     int i;     for(i=1;i<=n;i++)     {       if(map[start][i]&&!visit[i])        {             visit[i]=1;             if(match[i]==-1||path(match[i]))             {                 match[i]=start;                 return 1;            }        }      }  return 0; } int main(void) {         int i,res,x,y;         scanf("%d%d",&n,&k);         memset(match,-1,sizeof(match));         memset(map,0,sizeof(map));         for(i=1;i<=k;i++)         {                scanf("%d%d",&x,&y);                map[x][y]=1;         }         res=0;         for(i=1;i<=n;i++)         {            memset(visit,0,sizeof(visit));            if(path(i))            res++;         }          printf("%d\n",res);

    }

    转载请注明原文地址: https://ju.6miu.com/read-32735.html

    最新回复(0)