Submission #875476

#TimeUsernameProblemLanguageResultExecution timeMemory
875476LucaLucaMICC (CEOI16_icc)C++17
7 / 100
205 ms856 KiB
#include "icc.h" #ifdef LOCAL #include "grader.cpp" #endif // LOCAL #include <vector> #include <iostream> #include <cassert> #include <algorithm> #include <cstring> const int NMAX = 100; int p[NMAX + 1]; int root(int u) { if (p[u] == u) { return u; } return p[u] = root(p[u]); } void join(int u, int v) { u = root(u), v = root(v); p[u] = v; } int ask(std::vector<int> a, std::vector<int> b) { int sz_a = (int) a.size(), sz_b = (int) b.size(); int A[sz_a], B[sz_b]; for (int i = 0; i < sz_a; i++) { A[i] = a[i]; } for (int i = 0; i < sz_b; i++) { B[i] = b[i]; } return query(sz_a, sz_b, A, B); } void run(int n) { bool before[n + 1][n + 1]; memset(before, false, sizeof(before)); for (int i = 1; i <= n; i++) { p[i] = i; } for (int k = 1; k < n; k++) { bool ok = false; for (int i = 1; i < n && !ok; i++) { for (int j = i + 1; j <= n && !ok; j++) { if (!before[i][j] && root(i) != root(j)) { before[i][j] = ask({i}, {j}); if (before[i][j]) { join(i, j); setRoad(i, j); ok = true; } } } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...