zoukankan      html  css  js  c++  java
  • bzoj2530 [POI2011]Party

    bzoj2530 [POI2011]Party

    给定一张 (n) (保证 (n)(3) 的倍数)个节点 (m) 条边的图,并且保证该图存在一个大小至少为 (frac{2}{3}n) 的团。请输出该图的任意一个大小为 (frac{1}{3}n)的团。

    (nleq3000, mleq n^2)

    贪心


    神仙题一道……

    结论:把所有不相邻的节点判掉,输出剩下的节点

    若两点都不在团中,显然直接判掉;若其中一点在团中,判掉会失去一个答案节点。由于有至少 (frac{2}{3}n) 个点两两相邻,因此最多只会执行 (frac{1}{3}n) 次判点操作,于是就至少会留下 (frac{1}{3}n) 个点,输出即可

    时间复杂度 (O(n^2))

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 3010;
    int n, m, flg[maxn], a[maxn][maxn];
    
    int main() {
      scanf("%d %d", &n, &m);
      for (int i = 1; i <= m; i++) {
        int u, v;
        scanf("%d %d", &u, &v);
        a[u][v] = a[v][u] = 1;
      }
      for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n && !flg[i]; j++) {
          if (!a[i][j] && !flg[j]) {
            flg[i] = flg[j] = 1;
          }
        }
      }
      int cnt = 0;
      for (int i = 1; i <= n; i++) {
        if (!flg[i]) {
          if (++cnt > n / 3) break;
          printf("%d ", i);
        }
      }
      return 0;
    }
    
  • 相关阅读:
    php上传文件大小修改
    flex布局
    restful
    mysql之windows忘记密码
    mysql常用命令
    比较级浅析1
    一般副词的位子
    still讲解
    英语学习法
    as的如下用法
  • 原文地址:https://www.cnblogs.com/Juanzhang/p/10883748.html
Copyright © 2011-2022 走看看