제출 #1295475

#제출 시각아이디문제언어결과실행 시간메모리
1295475kawhiet슈퍼트리 잇기 (IOI20_supertrees)C++20
19 / 100
104 ms30196 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; vector<int> cur; vector<bool> vis; vector<vector<int>> g; void dfs(int u) { cur.push_back(u); vis[u] = 1; for (auto v : g[u]) { if (!vis[v]) { dfs(v); } } } int construct(vector<vector<int>> p) { int n = p.size(); vis.resize(n); g.resize(n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (p[i][j] > 0) { g[i].push_back(j); g[j].push_back(i); } } } vector<vector<int>> comps; for (int i = 0; i < n; i++) { if (!vis[i]) { cur.clear(); dfs(i); if (!cur.empty()) { comps.push_back(cur); } } } for (auto a : comps) { for (auto x : a) { for (auto y : a) { if (p[x][y] == 0) { return 0; } } } } vector<vector<int>> ans(n, vector<int>(n)); for (auto a : comps) { if (a.size() == 1) { continue; } if (a.size() == 2) { return 0; } for (int i = 1; i < a.size(); i++) { ans[a[i]][a[i - 1]] = 1; ans[a[i - 1]][a[i]] = 1; } ans[a.back()][a[0]] = 1; ans[a[0]][a.back()] = 1; } 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...