제출 #1320352

#제출 시각아이디문제언어결과실행 시간메모리
1320352madamadam3수천개의 섬 (IOI22_islands)C++20
0 / 100
53 ms9368 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using pi = pair<int, int>; int n, m; vector<vi> adj; vi istate; struct DSU { int n; vector<int> par; DSU(int N = 0) : n(N), par(N) {iota(par.begin(), par.end(), 0);} int find(int v) {return par[v] == v ? v : par[v] = find(par[v]);} void unite(int a, int b) {if (find(b) != find(a)) par[find(b)] = find(a);} }; variant<bool, vi> find_journey(int N, int M, vi U, vi V) { n = N; m = M; istate.assign(n, 0); adj.resize(n); map<pi, int> ec; for (int i = 0; i < m; i++) { ec[{U[i], V[i]}]++; adj[U[i]].push_back(i); adj[V[i]].push_back(i); } int timer = 0; vi tin(n, -1); set<int> vis; vis.insert(0); auto dfs = [&](auto &&self, int u) { tin[u] = timer++; for (auto e : adj[u]) { if (U[e] != u) continue; int v = V[e]; if (vis.count(v)) { if (tin[u] > tin[v]) return true; else continue; } vis.insert(v); if (self(self, v)) { return true; } } return false; }; return dfs(dfs, 0); }
#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...