UESTC 1144 Big Brother 二分图、最大匹配

ProLightsfx 2016-3-12 136 3/12

Big Brother 二分图、最大匹配

Source

2015 UESTC Training for Graph Theory
The question is from
here.

My Solution

最大匹配问题 匈牙利算法, (似乎也可以用它的改进版,Hopcroft-Karp算法)
#include 
#include 
#include 
#include 
using namespace std;
const int maxn = 200 + 8;
int n;

vector g[maxn];
int from[maxn], tot;
bool use[maxn];

bool match(int x)
{
    int sz = g[x].size();
    for(int i = 0; i < sz; i++){
        if(!use[g[x][i]]) {
            use[g[x][i]] = true;
            if(from[g[x][i]] == -1 || match(from[g[x][i]])) {
                from[g[x][i]] = x;
                return true;
            }
        }
    }
    return false;
}

int hungary()
{
    tot = 0;
    memset(from, 255, sizeof from);
    for(int i = 1; i <= n; i++){
        memset(use, 0, sizeof use);
        if(match(i))
            ++tot;
    }
    return tot;
}

int main()
{
    int N, M, S, x;
    scanf("%d%d", &N, &M); n = N;
    for(int i = 1; i <= n; i++){
        scanf("%d", &S);
        for(int j = 1; j <= S; j++){
            scanf("%d", &x);
            g[i].push_back(x);
        }
    }
    printf("%d", hungary());
    return 0;
}

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月16日01:29

最后修改:2024年11月16日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论