Submission #1200844

#TimeUsernameProblemLanguageResultExecution timeMemory
1200844KerimConnecting Supertrees (IOI20_supertrees)C++17
19 / 100
125 ms26128 KiB
#include <bits/stdc++.h> #include "supertrees.h" // #include "grader.cpp" using namespace std; int construct(vector<vector<int>> p) { int n = (int)p.size(); vector<int> E[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { assert(p[i][j] == p[j][i]); if (i == j) assert(p[i][j] == 1); else assert(!p[i][j] || p[i][j] == 2); if (p[i][j] == 2) E[i].push_back(j); } } vector<bool> vis(n); vector<vector<int>> ans(n, vector<int>(n)); for (int i = 0; i < n; i++) { if (vis[i]) continue; int pre = i; queue<int> q; vector<int> v; q.push(i); vis[i] = true; while (!q.empty()) { int x = q.front(); q.pop(); v.push_back(x); for (auto j : E[x]) { if (!vis[j]) { q.push(j); vis[j] = true; ans[pre][j] = ans[j][pre] = 1; pre = j; } } } // assert((int)v.size() != 1); if ((int)v.size() == 1){ assert(E[i].empty()); continue; } if ((int)v.size() == 2) return 0; for (auto j : v) { for (auto k : v) if (!p[j][k]) return 0; } ans[i][pre] = ans[pre][i] = 1; } build(ans); return 1; }
#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...