Submission #1238023

#TimeUsernameProblemLanguageResultExecution timeMemory
1238023SalihSahinConnecting Supertrees (IOI20_supertrees)C++20
21 / 100
151 ms22116 KiB
#include "bits/stdc++.h" #include "supertrees.h" using namespace std; vector<int> par; int fnd(int a){ if(a == par[a]) return a; return par[a] = fnd(par[a]); } void merge(int a, int b){ a = fnd(a); b = fnd(b); par[b] = a; } int construct(vector<vector<int>> p) { int n = p.size(); par.resize(n); for(int i = 0; i < n; i++){ par[i] = i; } for(int i = 0; i < n; i++){ for(int j = i+1; j < n; j++){ if(p[i][j] > 0) merge(i, j); } } bool pos = 1; for(int i = 0; i < n; i++){ for(int j = i+1; j < n; j++){ if(p[i][j] == 0 && fnd(i) == fnd(j)){ pos = 0; } } } if(!pos){ return 0; } vector<vector<int> > ans(n, vector<int>(n, 0)); vector<int> lst(n, -1); for(int i = 0; i < n; i++){ int g = fnd(i); if(lst[g] != -1){ ans[lst[g]][i] = ans[i][lst[g]] = 1; } lst[g] = i; } 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...