zoukankan      html  css  js  c++  java
  • HDU1068 Girls and Boys 最大独立子集

    这题就是给定若干关系,求一个集合,该机和内部的各点之间没有任何关系,求得这个集合的元素最多为多少。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #define MAXN 500
    using namespace std;

    int N, visit[MAXN], marry[MAXN], G[MAXN][MAXN];

    int path(int u)
    {
    for (int i = 0; i < N; ++i) {
    if (!G[u][i] || visit[i]) {
    continue;
    }
    visit[i] = 1;
    if (marry[i] == -1 || path(marry[i])) {
    marry[i] = u;
    return 1;
    }
    }
    return 0;
    }

    int main()
    {
    int num, obj, a, ans;
    while (scanf("%d", &N) == 1) {
    ans = 0;
    memset(G, 0, sizeof (G));
    memset(marry, 0xff, sizeof (marry));
    for (int i = 0; i < N; ++i) {
    scanf("%d: (%d)", &a, &num);
    for (int j = 0; j < num; ++j) {
    scanf("%d", &obj);
    G[a][obj] = 1;
    }
    }
    for (int i = 0; i < N; ++i) {
    memset(visit, 0, sizeof (visit));
    if (path(i))
    ++ans;
    }
    printf("%d\n", N-(ans>>1));
    }
    return 0;
    }



  • 相关阅读:
    @codeforces
    @codeforces
    @hdu
    @hdu
    @bzoj
    @bzoj
    @topcoder
    推荐系统主题相关资料
    Python统计百分比及排序
    如何发布及部署asp.net网站
  • 原文地址:https://www.cnblogs.com/Lyush/p/2423558.html
Copyright © 2011-2022 走看看