Submission #763390

#TimeUsernameProblemLanguageResultExecution timeMemory
763390T0p_Connecting Supertrees (IOI20_supertrees)C++14
0 / 100
1 ms312 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; const int N = 1000; int pa[N]; int fp(int u) { return pa[u] = (u == pa[u]) ? u : fp(pa[u]); } int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>> ans(n, vector<int>(n)); for (int i=0 ; i<n ; i++) pa[i] = i; for (int i=0 ; i<n ; i++) { for (int j=i+1 ; j<n ; j++) { if (p[i][j] == 1) { ans[i][j] = ans[j][i] = 1; pa[fp(i)] = fp(j); } } } for (int i=0 ; i<n ; i++) { vector<int> loop; for (int j=i+1 ; j<n ; j++) { if (p[i][j] == 2 && fp(i) != fp(j)) { loop.push_back(j); pa[fp(i)] = fp(j); } } if (loop.empty()) continue; int prv = i; for (int cur : loop) { ans[prv][cur] = ans[cur][prv] = 1; prv = cur; } ans[loop.back()][i] = ans[i][loop.back()] = 1; } for (int i=0 ; i<n ; i++) { for (int j=i+1 ; j<n ; j++) { if (p[i][j] == 3) { return 0; } } } 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...