Cod sursa(job #3138177)

Utilizator petric_mariaPetric Maria petric_maria Data 17 iunie 2023 20:33:01
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,s[400001],k,cm,p,q;
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; k=0; cm=0;
    for(i=1;i<=m;++i){
        f>>x[i]>>y[i]>>c[i]; v[i]=i;
        if(i<=n) 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 && k<n-1;++i){
        p=grup(x[v[i]]); q=grup(y[v[i]]);
        if(p!=q){
            cm+=c[v[i]]; t[p]=q; ++k; s[k]=v[i];
        }
    }
    g<<cm<<'\n';
    g<<n-1<<'\n';
    for(i=1;i<n;++i) g<<x[s[i]]<<' '<<y[s[i]]<<'\n';
    return 0;
}