Submission #1071246

#TimeUsernameProblemLanguageResultExecution timeMemory
1071246IgnutConnecting Supertrees (IOI20_supertrees)C++17
21 / 100
164 ms24200 KiB
// Ignut #include <bits/stdc++.h> using namespace std; using ll = long long; void build(vector<vector<int>> b); struct DSU { vector<int> p; vector<vector<int>> comp; void Init(int n) { p.clear(), comp.clear(); for (int i = 0; i < n; i ++) p.push_back(i), comp.push_back({i}); } int Get(int v) { return p[v] == v ? v : p[v] = Get(p[v]); } void Unite(int u, int v) { u = Get(u), v = Get(v); if (u == v) return; if (comp[u].size() > comp[v].size()) swap(u, v); p[u] = v; for (int val : comp[u]) comp[v].push_back(val); } }; int construct(vector<vector<int>> p) { int n = p.size(); DSU dsu; dsu.Init(n); for (int i = 0; i < n; i ++) { for (int j = 0; j < n; j ++) { if (p[i][j] == 1) { dsu.Unite(i, j); } } } for (int i = 0; i < n; i ++) { for (int j = 0; j < n; j ++) { bool f1 = p[i][j]; bool f2 = (dsu.Get(i) == dsu.Get(j)); if (f1 != f2) return 0; } } vector<vector<int>> b(n); for (int i = 0; i < n; i ++) b[i].assign(n, 0); for (int i = 0; i < n; i ++) { if (dsu.Get(i) != i) continue; for (int j = 0; j + 1 < dsu.comp[i].size(); j ++) b[dsu.comp[i][j]][dsu.comp[i][j + 1]] = b[dsu.comp[i][j + 1]][dsu.comp[i][j]] = 1; } build(b); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:51:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |         for (int j = 0; j + 1 < dsu.comp[i].size(); j ++)
      |                         ~~~~~~^~~~~~~~~~~~~~~~~~~~
#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...