JOI 2013 - Synchronization

Author: Benjamin Qi

Method 1 - ?

When deleting an edge, remember how many systems that edge was used to synchronize. Also, each moment there is a connected component, all computers in the component have the same value.

Andi Qu

^ This is O(Nlog2N)\mathcal{O}(N\log^2N) I think

If we use HLD or LCT then it's O(NlogN)\mathcal{O}(N\log N).

Method 2 - Centroid Decomposition

Looks like O(Nlog3N)\mathcal{O}(N \log^3 N) is very fast!

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using db = double;
using str = string; // yay python!
using pi = pair<int, int>;
using pl = pair<ll, ll>;

Join the USACO Forum!

Stuck on a problem, or don't understand a module? Join the USACO Forum and get help from other competitive programmers!