제출 #1303482

#제출 시각아이디문제언어결과실행 시간메모리
1303482nikoloz-ch이주 (IOI25_migrations)C++20
0 / 100
30 ms952 KiB
#include <bits/stdc++.h> using namespace std; int p[10001]; vector<vector<int>> a; vector<int> v; void dfs(int u, int k, int cnt){ v[u] = cnt; for(int e : a[u]){ if(e != k) dfs(e, u, cnt + 1); } } int vt[7], ml = -1; bool tr = false; int send_message(int N, int i, int Pi){ p[i] = Pi; if(i >= N - 7){ a.assign(N + 1, {}); v.assign(N + 1, 0); for(int j = 1; j <= N; j++){ a[p[j]].push_back(j); } dfs(0, -1, 0); int mx = 1; for(int j = 2; j <= N; j++){ if(v[j] > v[mx]) mx = j; } if(mx != ml){ ml = mx;tr = false;return 4; } if(!tr){ for(int i = 6; i >= 0; i--){ vt[i] = mx % 4; mx /= 4; } tr = true; } return vt[i-(N-7)]; } return 0; } pair<int,int> longest_path(vector<int> S){ int mx = 0; for(int i = S.size()-7; i < S.size(); i++){ if(S[i] == 4) return {0, i}; mx = mx*4+S[i]; } return {0, mx}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...