Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<map>
- using namespace std;
- int parent[210];
- int find(int x){
- if(parent[x] == x)return x;
- return parent[x] = find(parent[x]);
- }
- void unions(int x,int y){
- int rx = find(x);
- int ry = find(y);
- parent[rx] = ry;
- }
- int main()
- {
- multimap<int,pair<int,int> >mymap;
- int n,w;
- scanf("%d %d",&n,&w);
- for(int i = 0 ; i <= n ; i ++)parent[i] = i;
- for(int t = 0 ; t < w ; t ++){
- int cnt = n;
- int sum = 0;
- int u,v,d;
- scanf("%d %d %d",&u,&v,&d);
- mymap.insert({d,{u,v}});
- std::multimap<int,pair<int,int> >::iterator its = mymap.begin();
- int ce = 0;
- while(its != mymap.end()){
- u = its->second.first;
- v = its->second.second;
- d = its->first;
- if(find(u) != find(v)){
- unions(u,v);
- sum += d;
- ce++;
- }
- ++its;
- }
- if(ce < n - 1){
- printf("-1\n");
- }else{
- printf("%d\n",sum);
- }
- for(int i = 0 ; i <= n ; i ++){
- parent[i] = i;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement