zoukankan      html  css  js  c++  java
  • HDU 2603 二分匹配

    #include <queue>
    #include <vector>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;

    const int N = 510;
    int maps[N][N], visit[N], used[N];
    int n, m;
    bool Find(int u)//女生u
    {
    for(int i=1; i<=n; i++)
    {
    if(!visit[i]&&maps[u][i])//i男生
    {
    visit[i]=1;
    if(!used[i]||Find(used[i]))
    {
    used[i]=u;
    return true;
    }
    }
    }
    return false;
    }
    int main()
    {
    int k;
    while(scanf("%d", &k), k)
    {
    scanf("%d%d", &m, &n);
    memset(maps, 0, sizeof(maps));
    while(k--)
    {
    int a, b;
    scanf("%d%d", &a, &b);
    maps[a][b]=1;//有伴
    }//used[i]表示第i个男生和used[i]女生作伴
    memset(used, 0, sizeof(used));
    int ans=0;
    for(int i=1; i<=m; i++)
    {
    //visit[i]表示i男生有没有被增广过
    memset(visit, 0, sizeof(visit));
    if(Find(i))
    ans++;
    }
    printf("%d ", ans);
    }
    return 0;
    }

  • 相关阅读:
    每周总结
    5月2日学习日志
    5月1日学习日志
    4月30日学习日志
    4月29日学习日志
    4月28日学习日志
    4月27日学习日志
    每周总结
    vue滚动插件BetterScroll
    vue 获取页面高度
  • 原文地址:https://www.cnblogs.com/wazqWAZQ1/p/4712629.html
Copyright © 2011-2022 走看看