Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int N = 2 * 100100;
- int p[N], sz[N];
- void init()
- {
- for (int i = 0; i < N; i++)
- p[i] = i, sz[i] = 1;
- }
- int find_set(int v)
- {
- if (v == p[v])
- return v;
- return p[v] = find_set(p[v]);
- }
- void union_set(int a, int b)
- {
- a = find_set(a);
- b = find_set(b);
- if (a != b)
- {
- if (sz[a] < sz[b])
- swap(a, b);
- p[b] = a;
- sz[a] += sz[b];
- }
- }
- vector<vector<pii>>g;
- vector<pair<int, pii>> e;
- vector<int> pr;
- vector<int>lvl;
- vector<vector<int>>jump;
- vector<vector<int>>maxW;
- int n, m;
- int LOG = 20;
- void inputGraph()
- {
- cin >> n >> m;
- g = vector<vector<pii>>(n);
- pr = vector<int>(n);
- lvl = vector<int>(n);
- jump = vector<vector<int>>(n, vector<int>(LOG));
- maxW = vector<vector<int>>(n, vector<int>(LOG));
- for (int i = 0; i < m; i++)
- {
- int u, v, w;
- cin >> u >> v >> w;
- u--, v--;
- e.pb({ w,{u,v} });
- g[v].pb({ u,w });
- g[u].pb({ v,w });
- }
- }
- void solve()
- {
- init();
- inputGraph();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement