• hdu 1083 最大匹配


    题意:N个学生 P 个课程  求最大匹配

    3 3  //学生 课程
    3 1 2 3  //课程1 匹配学生1 2 3
    2 1 2
    1 1
    典型的匹配没什么好说的
    #include<iostream>
    using namespace std;
    int p,n;
    int map[500][500];
    int pre[500];
    int v[500];
    int dfs(int k)
    {
        for(int i=1;i<=p;i++)
        {
            if(v[i]||!map[i][k])   //第i个人已经被上一个k课程给匹配了
                continue;
            v[i]=1;                     
            if(pre[i]==-1||dfs(pre[i]))
            {
                pre[i]=k;
                return 1;
            }
        }
        return 0;
    }
    int main()
    {
        int t,x,y,count,i,j;
        cin>>t;
        while(t--)
        {
            cin>>p>>n;
            memset(map,0,sizeof(map));
            memset(pre,-1,sizeof(pre));
            for(i=1;i<=p;i++)
            {
                cin>>x;
                for(j=1;j<=x;j++)
                {
                    cin>>y;
                    map[i][y]=1;
                }
            }
            count=0;
            for(i=1;i<=n;i++)
            {
                memset(v,0,sizeof(v));
                if(dfs(i))
                    count++;
            }
            if(count==p)
                cout<<"YES"<<endl;
            else
            cout<<"NO"<<endl;
        }
        return 0;
    }
                    
    
  • 相关阅读:
    css定位
    css盒子
    css元素分类
    Css属性
    Css基础2
    啊啊啊啊
    函数指针
    重载函数
    成员函数
    资源网站
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3704373.html
Copyright © 2020-2023  润新知