Submission #1291685

#TimeUsernameProblemLanguageResultExecution timeMemory
1291685gustavo_dConnecting Supertrees (IOI20_supertrees)C++20
0 / 100
1 ms348 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; #define sz(v) (int)(v).size() const int MAXN = 5000; vector<int> adj[MAXN]; vector<pair<int, int>> eds; bool vis[MAXN]; vector<int> cycle; void dfs(int v) { vis[v] = true; cycle.push_back(v); for (int viz : adj[v]) { if (vis[viz]) continue; dfs(viz); } } 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 (vis[i]) continue; cycle.clear(); dfs(i); if (sz(cycle) == 1) continue; for (int u : cycle) { for (int v : cycle) { if (u == v) continue; if (paths[u][v] == 0) return 0; } } for (int j=1; j<sz(cycle); j++) eds.emplace_back(cycle[j], cycle[j-1]); eds.emplace_back(cycle[0], cycle.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...