제출 #1251694

#제출 시각아이디문제언어결과실행 시간메모리
1251694fv3Migrations (IOI25_migrations)C++20
0 / 100
468 ms1224 KiB
#include "migrations.h" #include <bits/stdc++.h> using namespace std; const int N = 10000; vector<vector<int>> adj(N); int diameter = 0; int ai = 0, bi = 0; bool Aunknown = true; bool Bunknown = true; int Abit = 0; int Bbit = 0; int send_message(int N_, int i, int Pi) { assert(N_ == 10000); adj[i].push_back(Pi); adj[Pi].push_back(i); vector<int> dist(i + 1), vis(i + 1); auto Dfs = [&](auto&& self, int j) -> void { vis[j] = 1; for (auto node : adj[j]) { if (vis[node]) continue; dist[node] = dist[j] + 1; self(self, node); } }; Dfs(Dfs, i); if (dist[ai] > diameter) { bi = i; diameter = dist[ai]; } else if (dist[bi] > diameter) { ai = i; diameter = dist[bi]; } if (i >= N - 28) { if (ai == i) { Aunknown = false; return 2; } else if (bi == i) { Bunknown = false; return 3; } if (Aunknown && Abit < 14) { return ((ai & (1 << Abit++)) ? 1 : 0); } else if (Bunknown && Bbit < 14) { return ((bi & (1 << Bbit++)) ? 1 : 0); } } return 0; } pair<int, int> longest_path(vector<int> S) { int A = 0, B = 0; bool isAunknown = true; bool isBunknown = true; int bitA = 0; int bitB = 0; for (int i = N - 28; i < N; i++) { if (S[i] == 2) { isAunknown = false; A = i; } else if (S[i] == 3) { isBunknown = false; B = i; } if (isAunknown && bitA < 14) { A |= (S[i] << bitA++); } else if (isBunknown && bitB < 14) { B |= (S[i] << bitB++); } } return {A, B}; } //#include "grader.cpp"
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...