HDU 1083 二分匹配

来源:互联网 发布:打架吧鬼神好看吗 知乎 编辑:程序博客网 时间:2024/05/06 08:22
#include<bits/stdc++.h>using namespace std;vector< int >v[305];int vis[305];int link[305];bool dfs(int u){    for(int i=0; i<v[u].size(); i++)    {        if(!vis[v[u][i]])        {            vis[v[u][i]]=1;            if(!link[v[u][i]] || dfs(link[v[u][i]]))            {                link[v[u][i]] = u;                return true;            }        }    }    return false;}void Init(){    for(int i = 0; i <305; i++)        v[i].clear();    memset(vis,0,sizeof(vis));    memset(link,0,sizeof(link));}int main(){    int T;    scanf("%d",&T);    while(T--)    {        Init();        int n,m;        scanf("%d%d",&m,&n);        for(int i = 1; i<= m; i++)        {            int x;            scanf("%d", &x);            int y;            while(x--)            {                scanf("%d",&y);                v[i].push_back(y);            }        }        int cot = 0;        for(int i = 1 ; i <= m; i++)        {            memset(vis,0,sizeof(vis));            if(dfs(i))            {                cot++;            }        }        if(cot == m)        {            printf("YES\n");        }        else            printf("NO\n");    }    return 0;}

0 0
原创粉丝点击