HDU 2063过山车

来源:互联网 发布:linux 软件安装方式 编辑:程序博客网 时间:2024/05/22 12:28
二分图,入门的题目
#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;const int MAX = 505;int g[MAX][MAX];int used[MAX];int r[MAX];int k, m, n;inline void file(){    freopen("D:\\he.txt", "r", stdin);    freopen("D:\\out.txt", "w", stdout);}bool dfs(int x){    for (int i = 1; i <= m; ++i)    {        if (g[x][i] == 1 && !used[i])        {            used[i] = 1;            if (r[i] == 0 || dfs(r[i]))            {                r[i] = x;                return true;            }        }    }    return false;}int main(){    //file();    while (scanf("%d", &k))    {        if (k == 0)            break;        scanf("%d%d", &m, &n);        memset(g, 0, sizeof(g));        memset(r, 0, sizeof(r));        int girl, boy;        for (int i = 0; i != k; ++i)        {            scanf("%d%d", &girl, &boy);            g[boy][girl] = 1;        }        int res = 0;        for (int i = 1; i <= n; ++i)        {            memset(used, 0, sizeof(used));            if(dfs(i))                res++;        }        printf("%d\n", res);    }    return 0;}

0 0
原创粉丝点击