Submission #1204458

#TimeUsernameProblemLanguageResultExecution timeMemory
1204458banganConnecting Supertrees (IOI20_supertrees)C++20
0 / 100
0 ms328 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; #define pb push_back const int N = 1e3+4; bool vis[N]; vector<int> adj[N]; vector<int> List; void dfs(int v) { vis[v] = true; List.pb(v); for (int u : adj[v]) if (!vis[u]) dfs(u); } int construct(std::vector<std::vector<int>> p) { int n = p.size(); vector ans(n, vector<int>(n)); for (int i=0; i<n; i++) { if (p[i][i]!=1) return 0; for (int j=0; j<n; j++) { if (i!=j) assert(p[i][j]==0 || p[i][j]==2); if (p[i][j]!=p[j][i]) return 0; } } for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (p[i][j]) { adj[i].pb(j); adj[j].pb(i); } for (int i=0; i<n; i++) if (!vis[i]) { dfs(i); if (List.size()>1) List.pb(List[0]); for (int i=0; i+1 < List.size(); i++) { int v = List[i], u = List[i+1]; ans[v][u] = ans[u][v] = 1; } for (int v:List) for (int u:List) if (u!=v && p[v][u]+p[u][v]!=4) return 0; List.clear(); } 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...