제출 #652857

#제출 시각아이디문제언어결과실행 시간메모리
652857LoboThousands Islands (IOI22_islands)C++17
1.75 / 100
136 ms41480 KiB
#include "islands.h" #include<bits/stdc++.h> using namespace std; #define pb push_back #define fr first #define sc second const int maxn = 2e5+10; int n, m, tin[maxn], low[maxn], mark[maxn], iscyc[maxn], can0[maxn], timer; vector<int> g[maxn], gt[maxn]; map<int,vector<int>> boats[maxn]; vector<int> cur, final; int cycbeg = -1; void dfs(int u, int ant) { mark[u] = 1; cur.pb(u); if(final.size()) return; for(auto v : g[u]) if(v != ant) { if(final.size()) return; if(mark[v]) { final = cur; cycbeg = v; return; } else dfs(v,u); } } void dfs0(int u) { can0[u] = 1; for(auto v : g[u]) { if(can0[v] == 0) dfs0(v); } } variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) { n = N; m = M; for(int i = 0; i < m; i++) { g[U[i]].pb(V[i]); gt[V[i]].pb(U[i]); boats[U[i]][V[i]].pb(i); } dfs(0,-1); dfs0(0); if(final.size()) { return true; } for(int i = 0; i < n; i++) { for(auto X : boats[i]) { if(X.sc.size() > 1 && can0[i]) return true; } } 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...