Submission #1142787

#TimeUsernameProblemLanguageResultExecution timeMemory
1142787PagodePaivaConnecting Supertrees (IOI20_supertrees)C++17
100 / 100
129 ms30200 KiB
#include<bits/stdc++.h> #include "supertrees.h" #include <vector> using namespace std; const int N = 1010; vector <int> g[N][2]; vector <vector <int>> componentes; int mark[N]; vector <int> aux; void dfs(int v){ if(mark[v]) return; mark[v] = 1; aux.push_back(v); for(int i = 0;i < 2;i++){ for(auto x : g[v][i]){ dfs(x); } } return; } int ans[N][N]; int construct(std::vector<std::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] == 0) continue; if(p[i][j] == 3) return 0; g[i][p[i][j]-1].push_back(j); } } for(int i = 0;i < n;i++){ if(mark[i]) continue; dfs(i); componentes.push_back(aux); aux.clear(); } memset(mark, 0, sizeof mark); for(auto vertices : componentes){ vector <int> rep; for(auto v : vertices){ for(auto u : vertices){ if(p[u][v] == 0) return 0; } } for(auto v : vertices){ if(mark[v]) continue; for(auto x : g[v][0]){ for(auto y : g[v][0]){ if(p[x][y] != 1){ return 0; } if(g[x][0].size() != g[y][0].size()){ return 0; } } } int ant = v; for(auto x : g[v][0]){ ans[ant][x] = ans[x][ant] = 1; ant = x; mark[x] = 1; } mark[v] = 1; rep.push_back(v); } if(rep.size() == 2) return 0; if(rep.size() == 1) continue; rep.push_back(rep[0]); for(int i = 1;i < rep.size();i++){ int a = rep[i], b = rep[i-1]; ans[a][b] = ans[b][a] = 1; } } vector <vector <int>> resposta; for(int i = 0;i < n;i++){ vector <int> penis; for(int j = 0;j < n;j++){ penis.push_back(ans[i][j]); } resposta.push_back(penis); } build(resposta); 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...