# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
744982 | 2023-05-19T09:25:35 Z | irmuun | Cop and Robber (BOI14_coprobber) | C++17 | 0 ms | 0 KB |
#include<bits/stdc++.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 cur=r; }