제출 #1061668

#제출 시각아이디문제언어결과실행 시간메모리
1061668jamjanek수천개의 섬 (IOI22_islands)C++17
0 / 100
19 ms6512 KiB
#include "islands.h" #include <variant> #include <vector> #include<bits/stdc++.h> using namespace std; int odw[100010]; vector<pair<int, int>>graf[100010]; vector<int>ans; vector<int>stos; void dfs(int x, int kra){ /* if(graf[x].size()>2){ int pom = graf[x][0].second, pom1 = graf[x][1].second; if(pom/2==kra/2) pom = graf[x][2].second; if(pom1/2==kra/2) pom1 = graf[x][2].second; ans = stos; vector<int>POM = {pom, pom^1, pom1, pom1^1, pom^1, pom, pom1^1, pom1}; for(auto j: POM) ans.push_back(j); while(stos.size()){ ans.push_back(stos.back()); stos.pop_back(); } return; }*/ for(auto j: graf[x]){ if(kra/2!=j.second/2){ odw[j.first]++; if(odw[j.first]==2){ ans = {1}; return; } if(odw[j.first]==1){ stos.push_back(j.second); dfs(j.first, j.second); if(ans.size())return; stos.pop_back(); } } } } std::variant<bool, std::vector<int>> find_journey(int n, int m, std::vector<int> U, std::vector<int> V) { int i; for(i=0;i<m;i+=2){ graf[U[i]].push_back({V[i], i}); //graf[V[i]].push_back({U[i], i+1}); } odw[0] = 1; dfs(0, -2); if(ans.size()>0)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...