Submission #951391

#TimeUsernameProblemLanguageResultExecution timeMemory
951391study슈퍼트리 잇기 (IOI20_supertrees)C++17
21 / 100
179 ms24136 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; const int N = 1e3+1; int comp[N], siz[N]; int getComp(int node){ if (comp[node] != node) comp[node] = getComp(comp[node]); return comp[node]; } bool merge(int a, int b, bool y){ a = getComp(a); b = getComp(b); if (a != b){ if (!y) return 1; if (siz[a] > siz[b]) swap(a,b); siz[b] += siz[a]; comp[a] = b; return 1; } return 0; } int construct(vector<vector<int>> p) { int n = p.size(); for (int i=0; i<n; ++i){ comp[i] = i; siz[i] = 1; } vector<vector<int>> ans(n,vector<int>(n)); for (int i=0; i<n; ++i){ for (int j=i+1; j<n; ++j){ if (p[i][j] == 1 and merge(i,j,1)){ ans[i][j] = 1; ans[j][i] = 1; } } } for (int i=0; i<n; ++i){ for (int j=i+1; j<n; ++j){ if (p[i][j] == 0 and !merge(i,j,0)) 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...