Submission #1235671

#TimeUsernameProblemLanguageResultExecution timeMemory
1235671Ghulam_Junaid수천개의 섬 (IOI22_islands)C++20
11.90 / 100
25 ms10308 KiB
#include <bits/stdc++.h> #include "islands.h" // #include "grader.cpp" using namespace std; const int N = 2e5 + 10; int n, m, vis[N], bad[N], good[N]; vector<int> g[N], V; vector<int> seen; bool dfs(int v){ if (good[v] or v == 0) return 1; if (bad[v]) return 0; seen.push_back(v); vis[v] = 1; bool ans = 0; for (int e : g[v]){ int u = V[e]; if (vis[u] == 2) continue; if (vis[u] == 1) ans = 1; else ans |= dfs(u); } vis[v] = 2; if (ans) good[v] = 1; else bad[v] = 1; return ans; } variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> vv) { V = vv; n = N, m = M; for (int i = 0; i < m; i ++){ g[U[i]].push_back(i); } int ans = 0; for (int e : g[0]){ ans += dfs(V[e]); if (ans >= 2) return true; for (int x : seen) vis[x] = 0; seen.clear(); } return false; }
#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...