Submission #1287032

#TimeUsernameProblemLanguageResultExecution timeMemory
1287032nathlol2슈퍼트리 잇기 (IOI20_supertrees)C++20
21 / 100
102 ms26128 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; int N; int pa[1005]; int _find(int x){ if(x == pa[x]) return x; return pa[x] = _find(pa[x]); } void _union(int x, int y){ x = _find(x), y = _find(y); if(x != y) pa[x] = y; } int construct(std::vector<std::vector<int>> p) { for(int i = 0;i<1005;i++) pa[i] = i; N = p.size(); vector<vector<int>> ans(N, vector<int>(N, 0)); vector<vector<int>> g(N); vector<bool> v(N, 0); for(int i = 0;i<N;i++){ for(int j = 0;j<N;j++){ if(i == j) continue; if(p[i][j]){ g[i].push_back(j); } } } for(int i = 0;i<N;i++){ if(v[i]) continue; v[i] = 1; int pv = i; for(auto x : g[i]){ v[x] = 1; _union(x, pv); ans[pv][x] = 1; ans[x][pv] = 1; pv = x; } } for(int i = 0;i<N;i++){ for(int j = 0;j<N;j++){ if(p[i][j]){ if(_find(i) != _find(j)) return 0; }else{ if(_find(i) == _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...