int kruskal(int N, vector<Edge> edges) { int totalCost = 0; sort(edges.begin(), edges.end()); DisjointSet dset = DisjointSet(N + 1); int source; int target; for (int i = 0; i < edges.size(); i++) { Edge e = edges[i]; if (!dset.same(e.source, e.target)) { //MST.push_back(e); totalCost += e.cost; dset.unite(e.source, e.target); } } return totalCost; }
int main(){ int n; long q; scanf(" %d %ld", &n, &q); DisjointSet ds = DisjointSet(n); for(long i=0; i<q; ++i){ int com, x, y; scanf(" %d %d %d", &com, &x, &y); if(com==0) ds.unite(x,y); else if(com==1){ if(ds.same(x,y)) printf("1\n"); else printf("0\n"); } } }