首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

HDU 1151Air Raid 最小径径覆盖=n-最大匹配量 (第二道二分匹配)

2012-09-19 
HDU 1151Air Raid最小路径覆盖n-最大匹配量 (第二道二分匹配)#includeiostream#includestdio.h#inclu

HDU 1151Air Raid 最小路径覆盖=n-最大匹配量 (第二道二分匹配)

#include<iostream>#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include<algorithm>using namespace std;int map[125][125],ve[125],vs[125];int s,e;int getpath(int u){    int i;    for(i=1;i<=s;i++)    {        if(!map[u][i] || ve[i])            continue;        ve[i]=1;        if(!vs[i] || getpath(vs[i]))        {            vs[i]=u;            return 1;        }    }    return 0;}int main(){//    freopen("in.txt","r",stdin);    int i,a,b,t;    scanf("%d",&t);    while(t--)    {        memset(map,0,sizeof(map));        memset(vs,0,sizeof(vs));        scanf("%d%d",&s,&e);        for(i=0;i<e;i++)        {            scanf("%d%d",&a,&b);            map[a][b]=1;        }        int ans=0;        for(i=1;i<=s;i++)        {            memset(ve,0,sizeof(ve));            ans+=getpath(i);        }        printf("%d\n",s-ans);    }    return 0;}


热点排行
Bad Request.