hdu 1083 二分匹配

来源:互联网 发布:安卓魔音通话变声软件 编辑:程序博客网 时间:2024/05/25 20:01
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int cs[305][305];int link[305];int has[305];int n, m, p;int pipen(int x) {    for(int i = 1; i <= n; i++) {        if(!has[i] && cs[x][i] == 1) {            has[i] = 1;            if(!link[i]||pipen(link[i])) {                link[i] = x;                return 1;            }        }    }    return 0;}int main(){    int t;    int a;    int ans;    scanf("%d", &t);    while(t--) {        scanf("%d%d", &p, &n);        ans = 0;         memset(cs, 0, sizeof(cs));        for(int i = 1; i <= p; i++) {            scanf("%d", &m);            for(int j = 0; j < m; j++) {                scanf("%d", &a);                cs[i][a] = 1;            }        }        memset(link, 0, sizeof(link));        for(int i = 1; i <= p; i++) {            memset(has, 0, sizeof(has));            if(pipen(i))                ans++;        }        if(ans == p) cout<<"YES"<<endl;        else cout<<"NO"<<endl;    }    return 0;}

0 0
原创粉丝点击