Cod sursa(job #2174838)

Utilizator Andreea_1009Cimpean Andreea Andreea_1009 Data 16 martie 2018 13:45:23
Problema Arbore partial de cost minim Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <limits.h>

using namespace std;

ifstream f("apm.in");
ofstream g("apm.out");

int n,m,c[20005][20005],viz[200005],cost_arbore,pred[200005];

void citire_graf()
{
    f>>n>>m;
    int x,y,val;
    for(int i=1;i<=m;++i)
    {
        f>>x>>y>>val;
        c[x][y]=c[y][x]=val;
    }
}

void arbore_partial_de_cost_minim()
{
    viz[1]=1;
    int nod1,nod2;
    for(int i=1;i<=n-1;++i)
    {
        int minim=INT_MAX;
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=n;k++)
            {
                if(viz[j]==1 && viz[k]==0 && c[j][k]!=0 && c[j][k]<minim)
                {
                    minim=c[j][k];
                    nod1=j;
                    nod2=k;
                }
            }
        }
        viz[nod2]=1;
        pred[nod2]=nod1;
        cost_arbore+=minim;
    }
}

void afisare()
{
    g<<cost_arbore<<'\n';
    g<<n-1<<'\n';
    for(int i=2;i<=n;++i)
        g<<pred[i]<<' '<<i<<'\n';
}

int main()
{
    citire_graf();
    arbore_partial_de_cost_minim();
    afisare();
    return 0;
}