Submission #1067163

#TimeUsernameProblemLanguageResultExecution timeMemory
1067163j_vdd16Thousands Islands (IOI22_islands)C++17
9.10 / 100
23 ms6568 KiB
#include "islands.h" #include <variant> #include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> //#define int long long #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; typedef uint64_t u64; typedef int64_t i64; int n, m; vvii adj; vb vis; vi depths; bool success = false; int counter = 0; vii inOut; int dfs(int node, int d, int parent) { if (node == parent) return 0; if (vis[node]) { return 1; } vis[node] = true; depths[node] = d; inOut[node].first = counter++; int count = 0; for (auto [child, idx] : adj[node]) { if (child == parent) continue; int res = dfs(child, d + 1, node); count += res; } if (count >= 2) success = true; inOut[node].second = counter++; return 1; } bool isAncestor(int a, int b) { return inOut[a].first <= inOut[b].first && inOut[b].first <= inOut[a].second; } vi marked; int dfs2(int node) { if (vis[node]) { marked[node]++; return 0; } vis[node] = true; int cycleCount = 0; for (auto [idx, child] : adj[node]) { marked[node] = 0; int res = dfs2(child); } if (marked[node] >= 2) { success = true; } } std::variant<bool, std::vector<int>> find_journey(int N, int M, vi U, vi V) { n = N; m = M; adj = vvii(n); loop(i, m) { adj[U[i]].push_back({V[i], i}); } // if (n >= 3) { // int n1 = adj[0][0].first; // int n2 = adj[0][1].first; // return vi{adj[0][0].second, adj[n1][0].second, adj[0][1].second, adj[n2][0].second, adj[n1][0].second, adj[0][0].second, adj[n2][0].second, adj[0][1].second }; // } // return false; depths = vi(n); counter = 0; inOut = vii(n); vis = vb(n); success = false; dfs(0, 0, -1); // vis = vb(n); // marked = vi(n); // dfs2(0); return success; // return false; // return success; }

Compilation message (stderr)

islands.cpp: In function 'int dfs2(int)':
islands.cpp:86:13: warning: unused variable 'res' [-Wunused-variable]
   86 |         int res = dfs2(child);
      |             ^~~
islands.cpp:83:9: warning: unused variable 'cycleCount' [-Wunused-variable]
   83 |     int cycleCount = 0;
      |         ^~~~~~~~~~
islands.cpp:92:1: warning: control reaches end of non-void function [-Wreturn-type]
   92 | }
      | ^
#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...