Submission #291570

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
2915702020-09-05 13:37:01penguinhackerPutovanje (COCI20_putovanje)C++17
110 / 110
182 ms22136 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ar array
const int mxN=2e5;
int n, c1[mxN], c2[mxN], dep[mxN], anc[mxN][18];
vector<ar<int, 3>> adj[mxN];
void dfs1(int u=0, int p=-1) {
for (int i=1; i<18; ++i) anc[u][i]=anc[anc[u][i-1]][i-1];
for (auto& v : adj[u]) if (v[0]!=p) {
c1[v[0]]=v[1];
c2[v[0]]=v[2];
dep[v[0]]=dep[u]+1;
anc[v[0]][0]=u;
dfs1(v[0], u);
}
}
int lca(int a, int b) {
if (dep[a]>dep[b]) swap(a, b);
for (int i=17; ~i; --i) if (dep[b]-(1<<i)>=dep[a]) b=anc[b][i];
if (a==b) return a;
for (int i=17; ~i; --i) if (anc[a][i]!=anc[b][i]) a=anc[a][i], b=anc[b][i];
return anc[a][0];
}
int cnt[mxN];
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...