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

来源:互联网 发布:杜蕾斯淘宝快递 编辑:程序博客网 时间:2024/06/05 18:59
#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;}


原创粉丝点击