Cod sursa(job #3138178)

Utilizator petric_mariaPetric Maria petric_maria Data 17 iunie 2023 20:37:34
Problema Arbore partial de cost minim Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n,m,i,j,x[400001],y[400001],c[400001],v[400001],t[200001],nr,cm,p,q;
vector<int> vct;
bool srt(int x,int y){
    return c[x]<c[y];
}
int grup(int k){
    if(t[k]==k) return k;
    else return grup(t[k]);
}
int main()
{
    f>>n>>m; cm=0;
    for(i=1;i<=m;++i){
        f>>x[i]>>y[i]>>c[i]; v[i]=i;
    }
    for(i=1;i<=n;++i) t[i]=i;
    sort(v+1,v+m+1,srt);
    //for(i=1;i<=m;++i) cout<<v[i]<<endl;
    for(i=1;i<=m;++i){
        p=grup(x[v[i]]); q=grup(y[v[i]]);
        if(p!=q){
            cm+=c[v[i]]; t[p]=q; vct.push_back(v[i]);
        }
    }
    g<<cm<<'\n';
    g<<n-1<<'\n';
    for(i=0;i<=n-2;++i) g<<x[vct[i]]<<' '<<y[vct[i]]<<'\n';
    return 0;
}