Cod sursa(job #3135774)

Utilizator vlad6001Pintilie Vlad vlad6001 Data 4 iunie 2023 14:14:45
Problema Arbore partial de cost minim Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("apm.in");
ofstream cout("apm.out");

struct muchie{
    int x, y;
    int cost;
}M[400005];

int n, m;
int p[200005];

void Union(int poz1, int poz2)
{
    p[poz1] = poz2;
}

int rad(int poz)
{
    if(p[poz] != poz)
        return rad(p[poz]);
    else
        return poz;
}
bool functie(muchie a, muchie b)
{
    return a.cost < b.cost;
}
int cnt;
int suma;
int v[400005];
int main()
{
    cin >> n;
    cin >> m;
    for(int i = 1; i <= n; i++)
        p[i]=i;
    for(int i = 1; i <= m; i++)
        cin >> M[i].x >> M[i].y >> M[i].cost;
    sort(M+1, M+m+1, functie);
    int poz = 1;
    while(cnt < n-1)
    {
        if(rad(M[poz].x) != rad(M[poz].y))
        {
            Union(M[poz].x,M[poz].y);
            cnt++;
            suma += M[poz].cost;
            v[cnt] = poz;
        }
        poz++;
    }
    cout << suma<<'\n'<<cnt<<'\n';
    for(int i = 1; i <= cnt; i++)
        cout << M[i].x<<' '<<M[i].y<<'\n';

    return 0;
}