Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int parent[100010];
- using tu = tuple<int ,int ,int>;
- int find(int u){
- if(parent[u]==u){
- return u;
- }
- return parent[u]=find(parent[u]);
- }
- void merge(int u ,int v){
- u=find(u);
- v=find(v);
- if(u==v){
- return ;
- }
- if(u>v){
- parent[v]=u;
- }
- else{
- parent[u]=v;
- }
- }
- int main(){
- int n,m;
- scanf("%d%d",&n,&m);
- for(int i=1;i<=n;++i){
- parent[i]=i;
- }
- int u , v ,w;
- vector<tu> way;
- for(int i=0;i<m;++i){
- scanf("%d%d%d",&u,&v,&w);
- way.push_back(make_tuple(w,u,v));
- }
- sort(way.begin(),way.end());
- for(auto c : way){
- if(find(get<1>(c))==find(get<2>(c))){
- continue;
- }
- cout << get<1>(c) << " " << get<2>(c) << "\n";
- merge(get<1>(c),get<2>(c));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement