Cod sursa(job #2871175)

Utilizator davidbostinaBostina David davidbostina Data 12 martie 2022 23:30:57
Problema Arbore partial de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");

long N,M,t[200001];
struct muchie
{
    int x,y,cost;
}m[200001];

muchie aux,linii[400001];

void citire()
{
    int i,j;
    fin>>N>>M;
    for(i=1;i<=M;i++)
    {
        fin>>m[i].x>>m[i].y>>m[i].cost;
    }
    for(i=1;i<=N;i++)
    {
        t[i]=i;
    }
}


int main()
{int i,j;
citire();
for(i=1;i<M;i++)
{
    for(j=i+1;j<=M;j++)
    {
        if(m[i].cost>m[j].cost)
        {
            aux=m[i];
            m[i]=m[j];
            m[j]=aux;
        }
    }
}
int k=0,suma=0,p=1;
while(k<N-1)
{
    if(t[m[p].x]!=t[m[p].y])
    {
        k++;
        suma=suma+m[p].cost;
        linii[k].x=m[p].x;
        linii[k].y=m[p].y;
        linii[k].cost=m[p].cost;
        int v=t[m[p].y];
        int b=t[m[p].x];
        for(i=1;i<=N;i++)
        {
            if(t[i]==v)
            {
                t[i]=b;
            }
        }


    }
    p++;
}
cout<<suma<<endl;
cout<<k<<endl;
for(i=1;i<p;i++)
{
    cout<<linii[i].y<<" "<<linii[i].x<<endl;
}

return 0;
}