Submission #1291678

#TimeUsernameProblemLanguageResultExecution timeMemory
1291678gustavo_dConnecting Supertrees (IOI20_supertrees)C++20
0 / 100
2 ms348 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; #define sz(v) (int)(v).size() const int MAXN = 1000; vector<int> adj[MAXN]; vector<pair<int, int>> eds; bool mark[MAXN], cycle[MAXN]; int construct(vector<vector<int>> paths) { int n = sz(paths); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (i == j) continue; if (paths[i][j] == 0) continue; adj[i].push_back(j); } } for (int i=0; i<n; i++) { if (mark[i]) continue; vector<int> in{i}; cycle[i] = true; for (int j=0; j<n; j++) { if (i == j) continue; if (paths[i][j] == 2) { cycle[j] = true; in.push_back(j); } } if (sz(in) == 1) continue; for (int v : in) { for (int j=v+1; j<n; j++) { if (cycle[v] and paths[j][v] != 2) return 0; if (!cycle[v] and paths[j][v] == 2) return 0; } } for (int v : in) cycle[v] = false; for (int j=0; j<sz(in); j++) eds.emplace_back(in[j], in[j-1]); eds.emplace_back(in[0], in.back()); } vector<vector<int>> ans(n, vector<int> (n, 0)); // cerr << sz(eds) << '\n'; for (auto [u, v] : eds) { // cerr << u << ' ' << v << '\n'; ans[u][v] = ans[v][u] = 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...