제출 #694910

#제출 시각아이디문제언어결과실행 시간메모리
69491079brueThousands Islands (IOI22_islands)C++17
1.75 / 100
62 ms10468 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, m; vector<int> link[100002], revLink[100002]; bool removeUselessVertices(); 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++){ link[U[i]].push_back(V[i]); revLink[U[i]].push_back(V[i]); } if(removeUselessVertices()) return false; return true; } int deg[100002]; bool removed[100002]; bool removeUselessVertices(){ /// outdegree 0 삭제 queue<int> que; for(int i=0; i<n; i++){ deg[i] = (int)link[i].size(); if(!deg[i]) que.push(i); } if(deg[0] == 1) for(auto y: revLink[0]) que.push(y); while(!que.empty()){ int x = que.front(); que.pop(); removed[x] = 1; for(auto y: revLink[x]){ deg[y]--; if(!deg[y] && !removed[y]) que.push(y); } } if(removed[0]) return true; for(int i=0; i<n; i++){ vector<int> v; for(auto x: link[i]) if(!removed[x]) v.push_back(x); v.swap(link[i]); } 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...