Submission #27546289


Source Code Expand

#include <iostream>
#include <vector>
using namespace std;

// {{{ UnionFind, DisjointSet
template<int MaxN>
class UnionFind {
  // if par[x] <  0: x is a parent and -par[x] is the size of the set
  // if par[x] >= 0: x's parent is par[x]
  int par[MaxN];
public:
  UnionFind() {
    for (int i = 0; i < MaxN; i++) {
      par[i] = -1;
    }
  }
  int root(int x) {
    if (par[x] < 0) {
      return x;
    } else {
      return par[x] = root(par[x]);
    }
  }
  bool same(int x, int y) {
    return root(x) == root(y);
  }
  int size(int x) {
    return -par[root(x)];
  }
  bool unite(int x, int y) {
    x = root(x);
    y = root(y);
    if (x == y) { return false; }
    if (par[x] > par[y]) {
      std::swap(x, y);
    }
    par[x] += par[y];
    par[y] = x;
    return true;
  }
};
void UnionFindSample() {
  printf("============ UnionFindSample ============\n");
  UnionFind<100> u;
  for (int i = 0; i < 34; i++) {
    u.unite(i, i*3);
  }
  for (int i = 0; i < 100; i++) {
    printf("root(%d) = %d\n", i, u.root(i));
  }
}
// }}} UnionFind, DisjointSet

int N, M;
int A[200005], B[200005];
vector<int> E[200005];

int main() {
  cin >> N >> M;
  for (int i = 0; i < M; i++) {
    cin >> A[i] >> B[i];
    A[i]--; B[i]--;
    E[min(A[i], B[i])].push_back(max(A[i], B[i]));
  }

  int k = 0;
  vector<int> v;
  UnionFind<200005> u;
  for (int i = N-1; i >= 0; i--) {
    v.push_back(k);
    k++;
    // printf("i = %d: ", i);
    for (int j = 0; j < E[i].size(); j++) {
      int n = E[i][j];
      // printf("%d, ", n);
      int oi = u.root(i), on = u.root(n);
      if (n > i) {
        u.unite(i, n);
      }
      if (u.root(i) != oi || u.root(n) != on) {
        k--;
      }
    }
    // printf(" ## ");
    // for (int j = 0; j < N; j++) { printf("%d -> %d, ", j, u.root(j)); } puts("");
  }
  for (int i = 0; i < v.size(); i++) {
    cout << v[v.size()-1-i] << endl;
  }
}

Submission Info

Submission Time
Task E - Graph Destruction
User daimatz
Language C++ (GCC 9.2.1)
Score 500
Code Size 1983 Byte
Status AC
Exec Time 405 ms
Memory 17320 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:73:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   73 |     for (int j = 0; j < E[i].size(); j++) {
      |                     ~~^~~~~~~~~~~~~
./Main.cpp:87:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   87 |   for (int i = 0; i < v.size(); i++) {
      |                   ~~^~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 37
Set Name Test Cases
Sample example0.txt, example1.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, example0.txt, example1.txt
Case Name Status Exec Time Memory
000.txt AC 14 ms 9036 KiB
001.txt AC 9 ms 9044 KiB
002.txt AC 10 ms 8940 KiB
003.txt AC 9 ms 8988 KiB
004.txt AC 8 ms 8928 KiB
005.txt AC 10 ms 8928 KiB
006.txt AC 287 ms 9592 KiB
007.txt AC 286 ms 9708 KiB
008.txt AC 284 ms 9660 KiB
009.txt AC 27 ms 9016 KiB
010.txt AC 27 ms 9124 KiB
011.txt AC 35 ms 9652 KiB
012.txt AC 39 ms 9636 KiB
013.txt AC 96 ms 12092 KiB
014.txt AC 94 ms 12032 KiB
015.txt AC 287 ms 9784 KiB
016.txt AC 287 ms 9668 KiB
017.txt AC 302 ms 10740 KiB
018.txt AC 302 ms 10848 KiB
019.txt AC 404 ms 14668 KiB
020.txt AC 405 ms 14820 KiB
021.txt AC 37 ms 9900 KiB
022.txt AC 69 ms 11608 KiB
023.txt AC 78 ms 11808 KiB
024.txt AC 80 ms 12028 KiB
025.txt AC 352 ms 12468 KiB
026.txt AC 353 ms 12528 KiB
027.txt AC 374 ms 16112 KiB
028.txt AC 380 ms 17320 KiB
029.txt AC 13 ms 8980 KiB
030.txt AC 12 ms 8964 KiB
031.txt AC 20 ms 8896 KiB
032.txt AC 402 ms 14496 KiB
033.txt AC 396 ms 14404 KiB
034.txt AC 401 ms 14564 KiB
example0.txt AC 10 ms 8996 KiB
example1.txt AC 11 ms 8916 KiB