# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1143398 | CDuong | Flights (JOI22_flights) | C++17 | 171 ms | 4000 KiB |
#include "Ali.h"
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
namespace Ali{
int n;
vector<vector<int>> g;
vector<int> tour, tin, tout, dep;
vector<vector<int>> st;
void dfs(int u, int p){
tour.push_back(u);
tin[u]=(int)tour.size()-1;
for (int v:g[u]) if (v!=p) dep[v]=dep[u]+1, dfs(v, u), tour.push_back(u);
tout[u]=(int)tour.size()-1;
}
int dist(int u, int v){
u=tin[u], v=tin[v];
if (u>v) swap(u, v);
int lg=__lg(v-u+1);
return dep[tour[u]]+dep[tour[v]]-min(st[lg][u], st[lg][v-(1<<lg)+1])*2;
}
void init(int N, vector<int> U, vector<int> V){
n=N;
g.clear(), tour.clear(), tin.clear(), tout.clear(), dep.clear(), st.clear();
g.resize(n);
for (int i=0; i<n-1; ++i) g[U[i]].push_back(V[i]), g[V[i]].push_back(U[i]);
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |