| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1348842 | lrnnz | Migrations (IOI25_migrations) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#define all(a) (a).begin(), (a).end()
#define ll long long
#define ld long double
#define ui __int128_t
#define pb push_back
#define fi first
#define se second
const ll MOD = 1e9 + 7;
const ll MOD3 = 998244353;
const ll MOD2 = 676767677;
const ll inf = 1e18;
/********* DEBUG *********/
template<typename T>
struct is_vector : false_type {};
template<typename T, typename A>
struct is_vector<vector<T, A>> : true_type {};
template<typename T>
void print_one(const T& x) {
if constexpr (is_vector<T>::value) {
for (size_t i = 0; i < x.size(); i++) {
cout << x[i];
if (i + 1 < x.size()) cout << ' ';
}
} else {
cout << x;
}
}
template<typename... Args>
void out(const Args&... args) {
bool first = true;
auto print_arg = [&](const auto& v) {
if (!first) cout << ' ';
first = false;
print_one(v);
};
(print_arg(args), ...);
cout << endl;
}
/********* DEBUG *********/
/********* TEMPS *********/
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
template<class T, class U> inline bool chmin(T& a, const U& b) { if (a > b) { a = b; return true; } return false; }
template<class T, class U> inline bool chmax(T& a, const U& b) { if (a < b) { a = b; return true; } return false; }
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
static inline ll splix(ll x) {
x += 0x9e3779b97f4a7c15ULL;
ll z = x;
z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9ULL;
z = (z ^ (z >> 27)) * 0x94d049bb133111ebULL;
return z ^ (z >> 31);
}
/********* TEMPS *********/
// #include "migrations.h"
ll n;
vector<vector<ll>> adj(10010);
vector<ll> dep(10010);
void dfs(ll u, ll p) {
for (auto &v : adj[u]) {
if (v == p) continue;
dep[v] = dep[u] + 1;
dfs(dfs, v, u);
}
}
int send_message(int N, int i, int Pi) {
n = N;
adj[i].pb(Pi);
adj[Pi].pb(i);
if (i == n-1) {
dfs(0, 0);
ll ans = 0;
for (int i = 0; i < n; i++)
if (dep[ans] < dep[i])
ans = i;
return ans;
}
return 0;
}
pair<int, int> longest_path(vector<int> S) {
return {0, S.back()};
}