Submission #720180

#TimeUsernameProblemLanguageResultExecution timeMemory
720180mseebacherConnecting Supertrees (IOI20_supertrees)C++17
21 / 100
280 ms26000 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; int construct(std::vector<std::vector<int>> p) { int n = p.size(); vector<vector<int>> comp(n); for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ if(p[i][j]){ comp[i].push_back(j); } } } for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ if(p[i][j] && comp[i] != comp[j]) return 0; } } vector<bool> vis(n,0); vector<vector<int>> ans(n,vector<int>(n,0)); vector<int> roots; for(int i = 0;i<n;i++){ if(!vis[i]){ roots.push_back(i); for(int j = 0;j<(int)comp[i].size();j++){ if(comp[i][j] == i) continue; ans[i][comp[i][j]] = 1; ans[comp[i][j]][i] = 1; vis[comp[i][j]] = 1; } } } vis.clear(); for(int i = 0;i<(int)roots.size();i++){ if(!vis[i]){ vector<int> x; x.push_back(roots[i]); for(int j = 0;j<(int)roots.size();j++){ if(find(comp[roots[i]].begin(),comp[roots[i]].end(),roots[j]) != comp[roots[i]].end() && p[roots[i]][roots[j]] == 2) x.push_back(roots[j]); } for(int j = 0;j<(int)x.size();j++){ if(j == (int)x.size()-1) { if(x[j] == x[0]) continue; ans[x[j]][x[0]] = 1; ans[x[0]][x[j]] = 1; }else{ if(x[j] == x[j+1]) continue; ans[x[j]][x[j+1]] = 1; ans[x[j+1]][x[j]] = 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...