Submission #301554

#TimeUsernameProblemLanguageResultExecution timeMemory
301554jwvg0425Connecting Supertrees (IOI20_supertrees)C++17
21 / 100
266 ms22244 KiB
#include "supertrees.h" #include <vector> using namespace std; int par[1005]; int find(int x) { if (par[x] == x) return x; return par[x] = find(par[x]); } void merge(int x, int y) { x = find(x); y = find(y); par[x] = y; } int construct(vector<vector<int>> p) { int n = p.size(); for (int i = 0; i < n; i++) par[i] = i; vector<vector<int>> answer; for (int i = 0; i < n; i++) { vector<int> row; row.resize(n); answer.push_back(row); } for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (p[i][j] == 0) continue; if (find(i) == find(j)) continue; merge(i, j); answer[i][j] = answer[j][i] = 1; } } for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if ((p[i][j] == 0 && find(i) == find(j)) || (p[i][j] == 1 && find(i) != find(j))) return 0; } } build(answer); 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...