Submission #566580

# Submission time Handle Problem Language Result Execution time Memory
566580 2022-05-22T12:34:35 Z lorenzoferrari Simurgh (IOI17_simurgh) C++17
0 / 100
1 ms 300 KB
#include <bits/stdc++.h>
#include "simurgh.h"
using namespace std;

int count_common_roads(const vector<int>& r);

vector<int> find_roads(int n, vector<int> u, vector<int> v) {
  int m = u.size();
  vector<vector<int>> adj(n);
  for (int i = 0; i < m; ++i) {
    adj[u[i]].push_back(v[i]);
    adj[v[i]].push_back(u[i]);
  }
  vector<int> p(n);
  auto find = [&](auto&& self, int i) -> int {
    return p[i] == i ? i : p[i] = self(self, p[i]);
  };
  auto onion = [&](int a, int b) -> bool {
    a = find(find,a);
    b = find(find,b);
    if (a == b) return false;
    p[a] = b;
    return true;
  };
  vector<int> ans;
  vector<int> st;
  auto cycle = [&]() -> bool {
    vector<vector<int>> g(n);
    for (int i = 0; i < n; ++i) p[i] = n;
    for (int i : st) {
      if (!onion(u[i], v[i])) {
        return false;
      }
    }
    return true;
  };
  auto generate = [&](auto&& self, int i) -> void {
    if (cycle()) return;
    if (int(st.size()) == n-1) {
      if (count_common_roads(st) == 0) ans = st;
      return;
    }
    if (i == m) return;
    st.push_back(i);
    self(self, i+1);
    st.pop_back();
    self(self, i+1);
  };
  generate(generate, 0);
  return ans;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB WA in grader: NO
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB WA in grader: NO
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB WA in grader: NO
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 300 KB WA in grader: NO
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB WA in grader: NO
2 Halted 0 ms 0 KB -