Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct ds_node
- {
- int par, size;
- ds_node()
- {
- size = 1;
- }
- };
- std::vector<ds_node> ds;
- void build(int size)
- {
- ds.resize(size);
- for(int i = 0; i < size; i++)
- ds[i].par = i;
- }
- int find(int u)
- {
- if(u != ds[u].par) ds[u].par = find(ds[u].par);
- return ds[u].par;
- }
- void merge(int u, int v)
- {
- if((u = find(u)) != (v = find(v)))
- {
- if(ds[u].size < ds[v].size) std::swap(u, v);
- ds[v].par = ds[u].par;
- ds[u].size += ds[v].size;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement