Submission #824965

#TimeUsernameProblemLanguageResultExecution timeMemory
824965Halym2007슈퍼트리 잇기 (IOI20_supertrees)C++17
11 / 100
165 ms31964 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; #define pb push_back const int N = 1005; int a[N][N], o; bool vis[N]; vector <int> v[N]; void dfs (int x, int pr) { if (pr != -1) { a[pr][x] = a[x][pr] = 1; } vis[x] = o; for (int i : v[x]) { if (vis[i]) continue; dfs (i, x); } } int construct(vector<vector<int>> p) { int n = p.size(); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i == j) continue; if (p[i][j]) { v[i].pb (j); } } } for (int i = 0; i < n; ++i) { if (!vis[i]) { o++; dfs (i, -1); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i == j) continue; if ((p[i][j] == 1) and (vis[i] != vis[j])) return 0; if (p[i][j] == 0 and vis[i] == vis[j]) return 0; } } vector<vector<int>> answer; for (int i = 0; i < n; i++) { vector<int> row; row.resize(n); for (int j = 0; j < n; ++j) { if (a[i][j]) row[j] = 1; } answer.push_back(row); } 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...