제출 #968555

#제출 시각아이디문제언어결과실행 시간메모리
968555AdamGSThousands Islands (IOI22_islands)C++17
3.50 / 100
34 ms12920 KiB
#include "islands.h" #include<bits/stdc++.h> using namespace std; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=2e5+7; vector<pair<int,int>>V[LIM]; vector<int>cykl; int odw[LIM], czy[LIM]; int DFS(int x) { odw[x]=1; for(auto i : V[x]) if(odw[i.st]) { czy[i.nd]=1; cykl.pb(i.nd); return i.st; } for(auto i : V[x]) { if(!odw[i.st]) { int p=DFS(i.st); if(p==-1) continue; if(p>=0) cykl.pb(i.nd); if(p==x) p=-2; return p; } } return -1; } variant<bool,vector<int>>find_journey(int n, int m, vector<int>X, vector<int>Y) { rep(i, m) V[X[i]].pb({Y[i], i}); if(DFS(0)==-1) return false; rep(i, n) V[i].clear(); for(auto i : cykl) swap(X[i], Y[i]); rep(i, m) if(!czy[i]) V[X[i]].pb({Y[i], i}); if(DFS(0)==-1) return false; return true; }
#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...