Cod sursa(job #2776215)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 18 septembrie 2021 21:21:35
Problema Arbore partial de cost minim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream A("apm.in");
ofstream B("apm.out");
#define N 200001
int d[N],x[2*N],y[2*N],c[2*N],n,m,e,p[2*N],l[N],i,j;
int E(int x)
{
    if(d[x]==x)
        return x;
    d[x]=E(d[x]);
    return d[x];
}
void R(int x,int y)
{
    d[E(x)]=E(y);
}
bool F(int a,int b)
{
    return c[a]<c[b];
}
int main()
{
    A>>n>>m;
    for(i=0;i<m;++i)
        A>>x[i]>>y[i]>>c[i],d[i]=p[i]=i;
    sort(p,p+m,F);
    for(i=0;i<m;++i)
        if(E(x[p[i]])!=E(y[p[i]]))
            e+=c[p[i]],R(x[p[i]],y[p[i]]),l[j++]=p[i];
    B<<e<<"\n"<<(n-1)<<"\n";
    for(i=0;i<n-1;++i)
        B<<x[l[i]]<<" "<<y[l[i]]<<"\n";
    return 0;
}