제출 #471152

#제출 시각아이디문제언어결과실행 시간메모리
471152Cross_Ratio슈퍼트리 잇기 (IOI20_supertrees)C++14
11 / 100
259 ms23920 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; //void build(vector<vector<int> >); struct UnionFind { vector<int> root; UnionFind(int N) { root.resize(N); fill(root.begin(),root.end(),-1); } int Find(int a) { if(root[a] < 0) return a; int r = Find(root[a]); root[a] = r; return r; } void Merge(int a, int b) { a = Find(a); b = Find(b); if(a == b) return; if(root[a] > root[b]) swap(a, b); root[a] += root[b]; root[b] = a; } }; int construct(vector<vector<int> > p) { vector<vector<int> > ans; int N = p.size(); ans.resize(N); int i; for(i=0;i<N;i++) ans[i].resize(N); int j; UnionFind UF(N); for(i=0;i<N;i++) { for(j=0;j<i;j++) { if(p[i][j]) { ans[i][UF.Find(j)] = 1; ans[UF.Find(j)][i] = 1; UF.Merge(i, j); } else { if(UF.Find(i) == UF.Find(j)) 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...