Submission #954773

#TimeUsernameProblemLanguageResultExecution timeMemory
954773n1k수천개의 섬 (IOI22_islands)C++17
9.10 / 100
92 ms13164 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; vector<vector<array<int, 2>>> g; vector<map<int, int>> connected; vector<int> color, par, nett; int x, y; bool dfs(int u, int p){ par[u] = p; color[u] = 1; if(nett[u]){ return true; } for(auto [v, e]:g[u]){ if(v==p) continue; if(color[v]){ x = v; y = u; return true; } if(dfs(v, u)){ return true; } } return false; } std::variant<bool, std::vector<int>> find_journey(int N, int M, std::vector<int> U, std::vector<int> V) { g.assign(N, {}); connected.assign(N, {}); color.assign(N, {}); par.assign(N, {}); nett.assign(N, {}); for(int i=0; i<M; i++){ if(not connected[U[i]][V[i]]){ g[U[i]].push_back({V[i], i}); } connected[U[i]][V[i]]++; if(connected[U[i]][V[i]]>=2 and connected[V[i]][U[i]]>=1){ nett[U[i]]=1; } if(connected[U[i]][V[i]]>=1 and connected[V[i]][U[i]]>=2){ nett[V[i]]=1; } } if(connected[0].size()>=2){ nett[0] = 1; } for(int i=1; i<N; i++){ if(connected[i].size()>=3){ nett[i]=1; } } return dfs(0, -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...