# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
744979 | 2023-05-19T09:24:07 Z | irmuun | 경찰관과 강도 (BOI14_coprobber) | C++17 | 0 ms | 0 KB |
#include<bits/stdc++.h> #include "coprobber.h" using namespace std; #define pb push_back #define ll long long #define ff first #define ss second #define all(s) s.begin(),s.end() vector<int>adj[500]; int start(int N,bool a[500][500]){ int cnt=0; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ if(i==j) continue; if(a[i][j]==true){ adj[i].pb(j); cnt++; } } } if(cnt!=2*(N-1)){ return -1; } return 0; } vector<int>used(500),p(500); int cur=0,f=0; void dfs(int u){ used[u]=1; for(auto v:adj[u]){ if(used[v]==0){ p[v]=u; dfs(v); } } } int nextmove(int r){ if(f==0){ dfs(0); f=1; } if(p[r]==cur){ return cur; } while(p[r]!=cur){ r=p[r]; } return r; }