Submission #1234091

#TimeUsernameProblemLanguageResultExecution timeMemory
1234091trimkusThousands Islands (IOI22_islands)C++20
1.75 / 100
22 ms4168 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; std::variant<bool, std::vector<int>> find_journey( int N, int M, std::vector<int> U, std::vector<int> V) { vector<vector<int>> adj(N); vector<int> deg(N); for (int i = 0; i < M; ++i) { adj[U[i]].push_back(V[i]); deg[U[i]] += 1; } for (int i = 0; i < N; ++i) { sort(begin(adj[i]), end(adj[i])); adj[i].erase(unique(begin(adj[i]), end(adj[i])), end(adj[i])); } // 0 - processing, 1 - no cycle, 2 - path to a cycle vector<int> state(N, -1); auto dfs = [&](auto& dfs, int v) -> void { // cout << v << " -> "; state[v] = 0; for (auto& u : adj[v]) { if (state[u] == -1) { dfs(dfs, u); } if (state[u] == 2) { state[v] = 2; return; } if (state[u] == 0) { state[v] = 2; return; } } }; dfs(dfs, 0); // cout << "\n"; // for (auto& u : state) cout << u << " "; // cout << "\n"; if (state[0] == 2 && deg[0] >= 2) return vector<int>({1}); 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...