답안 #964023

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
964023 2024-04-16T08:03:21 Z four_specks Pipes (CEOI15_pipes) C++17
0 / 100
846 ms 65536 KB
#include <bits/stdc++.h>

using namespace std;

namespace {

template <typename Fun>
struct YCombinator {
  template <typename T>
  YCombinator(T &&_fun) : fun(forward<T>(_fun)) {}

  template <typename... Args>
  decltype(auto) operator()(Args &&...args) {
    return fun(ref(*this), forward<Args>(args)...);
  }

 private:
  Fun fun;
};

template <typename T>
YCombinator(T &&) -> YCombinator<decay_t<T>>;

struct DSU {
  DSU(int n) : e(n, -1) {}

  int find(int x) {
    return e[x] < 0 ? x : e[x] = find(e[x]);
  }

  bool same(int x, int y) {
    return find(x) == find(y);
  }

  bool unite(int x, int y) {
    x = find(x);
    y = find(y);
    if (x == y) {
      return false;
    }
    if (e[x] > e[y]) {
      swap(x, y);
    }
    e[x] += e[y];
    e[y] = x;
    return true;
  }

  int size(int x) {
    return -e[find(x)];
  }

  int size() const {
    return (int)e.size();
  }

 private:
  vector<int> e;
};

}  // namespace

void solve() {
  int n, m;
  cin >> n >> m;
  vector<vector<pair<int, int>>> adj(n);
  DSU dsu1(n), dsu2(n);
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    --u;
    --v;
    if (dsu1.unite(u, v) || dsu2.unite(u, v)) {
      adj[u].emplace_back(v, i);
      adj[v].emplace_back(u, i);
    }
  }
  {
    vector<int> tin(n, -1), low(n);
    int timer = 0;
    // YCombinator([&](auto self, int u, int p) -> void {
    //   tin[u] = timer++;
    //   low[u] = tin[u];
    //   for (int v : adj[u]) {
    //     if (tin[v] == -1) {
    //       self(v, u);
    //     } else {
    //     }
    //   }
    // })(0, -1);
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  solve();

  return 0;
}

Compilation message

pipes.cpp: In function 'void solve()':
pipes.cpp:80:9: warning: unused variable 'timer' [-Wunused-variable]
   80 |     int timer = 0;
      |         ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Wrong number of edges
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1008 KB Wrong number of edges
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 66 ms 6140 KB Output is correct
2 Incorrect 69 ms 6016 KB Wrong number of edges
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 114 ms 11044 KB Output is correct
2 Incorrect 138 ms 12548 KB Wrong number of edges
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 186 ms 18740 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 277 ms 28076 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 412 ms 41592 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 549 ms 54060 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 666 ms 65424 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 846 ms 65536 KB Memory limit exceeded
2 Halted 0 ms 0 KB -