首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

poj 3041 (最大婚配)

2013-09-23 
poj3041(最大匹配)题意:给出一些危险小行星的位置,一次能消灭一行或一列的小行星,为最少多少次能消灭完。思

poj 3041 (最大匹配)

题意:给出一些危险小行星的位置,一次能消灭一行或一列的小行星,为最少多少次能消灭完。

思路:就是行跟列的最大匹配.




#include<stdio.h>#include<string.h>const int N=510;int map[N][N],match[N],link[N],n;int find(int i){int j;for(j=1;j<=n;j++){if(map[i][j]==1&&link[j]==0){link[j]=1;if(match[j]==-1||find(match[j])==1){match[j]=i;return 1;}}}return 0;}int main(){int i,k,x,y,sum;while(scanf("%d%d",&n,&k)!=-1){memset(map,0,sizeof(map));for(i=1;i<=k;i++){scanf("%d%d",&x,&y);map[x][y]=1;}sum=0;memset(match,-1,sizeof(match));for(i=1;i<=n;i++){memset(link,0,sizeof(link));sum+=find(i);}printf("%d\n",sum);}return 0;}


热点排行