제출 #603439

#제출 시각아이디문제언어결과실행 시간메모리
603439Tigryonochekk슈퍼트리 잇기 (IOI20_supertrees)C++17
0 / 100
1 ms212 KiB
#include <iostream> #include "supertrees.h" #include <vector> using namespace std; const int N = 1002; vector<vector<int>> answer; vector<int> dsu[N]; int com[N]; bool dfs(int v) { bool ret = 1; for (auto to : dsu[v]) { if (com[v] == com[to]) continue; if (!com[to]) return 0; com[to] = com[v]; ret &= dfs(to); } return ret; } int construct(vector<vector<int>> p) { int n = p.size(); answer.resize(n); for (int i = 0; i < n; i++) { answer[i].resize(n); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j == i) continue; if (p[i][j] == 1) { dsu[i].push_back(j); } } } int k = 1; bool f = true; for (int i = 0; i < n; i++) { if (!com[i]) { com[i] = k++; f &= dfs(i); } } if (!f) return 0; for (int i = 0; i < n; i++) { if (com[i]) { com[i] = 0; for (int j : dsu[i]) { answer[i][j] = 1; answer[j][i] = 1; com[j] = 0; } } } build(answer); 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...