Cod sursa(job #1915897)

Utilizator pusi23Faier Andreea pusi23 Data 8 martie 2017 23:00:54
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("f.in");
ofstream g("f.out");
int n,m,i,k,ct,arb[200001],j,nr;
struct vect
{
    int q,w;
}e[20001];
struct muchie
{
    int x,y;
    float cost;
} a[200001],t;
int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
        f>>a[i].x>>a[i].y>>a[i].cost;
    for(i=1;i<=n;i++)
        arb[i]=i;
    for(i=1;i<=m-1;i++)
        for(j=i+1;j<=m;j++)
            if(a[i].cost>a[j].cost)
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    k=0;
    ct=0;
    i=1;
    while(k<n-1)
    {
        if(arb[a[i].x]!=arb[a[i].y])
        {
            k++;
            ct=ct+a[i].cost;
            for(j=1;j<=n;j++)
                if(arb[j]==arb[a[i].x])
                {
                    arb[j]=arb[a[i].y];
                }
            nr++;
            e[nr].q=a[i].x;
            e[nr].w=a[i].y;
        }
        i++;
    }
    g<<ct<<'\n'<<nr<<'\n';
    for(i=1;i<=nr;i++)
        g<<e[i].q<<" "<<e[i].w<<'\n';
    f.close();
    g.close();
    return 0;
}