Cod sursa(job #2328017)

Utilizator mateimacMacoveiciuc Matei mateimac Data 25 ianuarie 2019 12:17:21
Problema Arbore partial de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");

int a[601][601],n,isol,vsol=1000000,val,viz[601];

void dfs(int st)
{
    viz[st]=1;
    for(int j=1;j<=n;j++)
        if(viz[j]==0 and a[st][j]!=1001)
        {
            val+=a[st][j];
            dfs(j);
        }
}

parc_afis(int st)
{
    viz[st]=1;
    for(int j=1;j<=n;j++)
        if(viz[j]==0 and a[st][j]!=1001)
        {
            out<<st<<" "<<j<<'\n';
            parc_afis(j);
        }
}

int main()
{
    int m,i,j,k,c;
    in>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        a[i][j]=1001;
    for(k=1;k<=m;k++)
    {
        in>>i>>j>>c;
        a[i][j]=c;
        a[j][i]=c;
    }


    for(c=1;c<=n;c++)
    {
        val=0;
        dfs(c);
        if(val<vsol)
        {
            vsol=val;
            isol=c;
        }
        for(i=0;i<=n;i++)
            viz[i]=0;
    }
    out<<vsol<<'\n'<<n-1<<'\n';
    parc_afis(isol);

    return 0;
}