hdu 1083 匈牙利算法模板题

题意:有p个课程,n个学生,每个课程有x个学生喜欢。如果每个课程都至少可以分配一个学生就输出YES,否则输出NO。

题解:匈牙利算法裸题。

代码:

#include <cstdio>
#include <cstring>
#define N 400
int Map[N][N],S[N],vis[N],n;
bool
dfs(int u){
    for
(int i=1;i<=n;i++){
        if
(Map[u][i]&&!vis[i]){
            vis[i]=1;
            if
(S[i]==-1||dfs(S[i])){
                S[i]=u;
                return
true;
            }
        }
    }

    return
false;
}

int
main(){
    int
t;
    scanf("%d",&t);
    while
(t--){
        int
p;
        memset(Map,0,sizeof(Map));
        scanf("%d%d",&p,&n);
        for
(int i=1;i<=p;i++){
            int
x,y;
            scanf("%d",&x);
            for
(int j=0;j<x;j++){
                scanf("%d",&y);
                Map[i][y]=1;
            }
        }

        memset(S,-1,sizeof(S));
        int
res=0;
        for
(int i=1;i<=p;i++){
            memset(vis,0,sizeof(vis));
            if
(dfs(i))    res++;
        }

        if
(res==p)    printf("YES\n");
        else
printf("NO\n");
    }

    return
0;
}

时间: 2024-08-24 22:30:11

hdu 1083 匈牙利算法模板题的相关文章

hdu 2063 匈牙利算法模板题

题意:有x个男生各自有喜欢的女生,y个女生各自有喜欢的男生.互相喜欢的在一起有好感度.问怎样好感度最高. 题解:匈牙利算法裸题. 代码: #include <cstdio>#include <cstring>#define N 1500int Map[N][N],M[N],vis[N];int k,m,n;bool dfs(int u){    for(int i=1;i<=n;i++){        if(Map[u][i]&&!vis[i]){     

匈牙利算法模板题 hdu 1150

Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6339    Accepted Submission(s): 3178 Problem Description As we all know, machine scheduling is a very classical problem in compu

hdu 1711 KMP算法模板题

题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串长度". 当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 而且next[j]恰好等于这个最大长度. 防止超时.注意一些细节.. 另外:尽量少用strlen.变量记录下来使用比較好,用字符数组而不用string //KMP算法模板题 //hdu

poj 1274 The Perfect Stall【匈牙利算法模板题】

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 9421 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr

POJ 3041 匈牙利算法模板题

一开始预习是百度的算法 然后学习了一下 然后找到了学长的ppt 又学习了一下.. 发现..居然不一样... 找了模板题试了试..百度的不好用 反正就是wa了..果然还是应当跟着学长混.. 图两边的点分别是行数和列数 每有一个点 就让所处行列连一条边 求最小点覆盖 然后卡住...后来看了增林的博客... 最小点覆盖=最大匹配数 果然是模板题.. 然后wa.. 后来发现是当进行对左边点的遍历的时候 每次都要mem一次vis数组 应该是每次找之前都重新清空啊..不然下次怎么找啊...增光路对点的是否被

【二分图匹配入门专题1】F - COURSES poj1469【最大匹配--匈牙利算法模板题】

Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whether it is possible to form a committee of exactly P students that satisfies simultaneously the conditions: every stude

hdu 2063 过山车 (最大匹配 匈牙利算法模板)

匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 题目大意: 中文题目,点进去马上知道. 解题思路: 这道题目就是求最大匹配数目,直接套用匈牙利算法模板,这个算法大概原则就是:有机会上,没有机会创造机会也要上. 代码: 1 #i

二分图匹配(匈牙利算法模板)

二分最大匹配的匈牙利算法模板 /* *************************************************** 二分图匹配(匈牙利算法的DFS实现) INIT:G[][]两边定点划分的情况 CALL:res=Hungary();输出最大匹配数 优点:适于稠密图,DFS找增广路快,实现简洁易于理解 时间复杂度:O(VE); *************************************************** */ const int MAXN = 51

匈牙利算法模板 hdu 1068 题意不清。。。。(数据范围太过随意。。)

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8104    Accepted Submission(s): 3711 Problem Description the second year of the university somebody started a study on the roman