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;
    }



  • 相关阅读:
    C++实现高斯滤波器
    移动通信
    最简单的DLL
    C/C++ 编译和链接过程
    Servlet 详解
    对 Java 集合的巧妙利用
    Java 泛型
    Java 字符编码与解码
    HTTP 400 错误
    a 标签的四种样式
  • 原文地址:https://www.cnblogs.com/Lyush/p/2423558.html
Copyright © 2011-2022 走看看