zoukankan      html  css  js  c++  java
  • leetcode1627 带阈值的图连通性

    思路:

    埃氏筛法+并查集。

    实现:

     1 class DSU
     2 {
     3     vector<int> p;
     4 public:
     5     DSU(int n)
     6     {
     7         p.resize(n);
     8         for (int i = 1; i < n; i++) p[i] = i;
     9     }
    10     int find(int x)
    11     {
    12         if (p[x] == x) return x;
    13         return p[x] = find(p[x]);
    14     }
    15     void uni(int x, int y)
    16     {
    17         x = find(x); y = find(y);
    18         if (x != y) p[x] = y;
    19     }
    20 };
    21 class Solution
    22 {
    23 public:
    24     vector<bool> areConnected(int n, int threshold, vector<vector<int>>& queries)
    25     {
    26         vector<bool> v(n + 1, false);
    27         DSU d(n + 1);
    28         for (int i = threshold + 1; i <= n; i++)
    29         {
    30             if (v[i]) continue;
    31             v[i] = true;
    32             for (int j = 2 * i; j <= n; j += i)
    33             {
    34                 d.uni(i, j);
    35                 v[j] = true;
    36             }
    37         }
    38         vector<bool> res;
    39         for (auto& q: queries)
    40         {
    41             if (d.find(q[0]) == d.find(q[1])) res.push_back(true);
    42             else res.push_back(false);
    43         }
    44         return res;
    45     }
    46 };
  • 相关阅读:
    Python 从入门到实践
    Python 斐波那契数列
    Python 纸牌游戏
    Python hangman小游戏
    BC #49 1001 Untitled
    BC#50 1003 The mook jong
    BC #50 1001 Distribution money
    vector
    stack
    queue
  • 原文地址:https://www.cnblogs.com/wangyiming/p/14717294.html
Copyright © 2011-2022 走看看