Cod sursa(job #1043665)

Utilizator dascalutudorDascalu Tudor dascalutudor Data 28 noiembrie 2013 21:07:54
Problema Arbore partial de cost minim Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int n,m,mat[20000][20000],s[200000],t[200000],vazut[200000],cost[200000],r;
void afisare()
{   int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            out<<mat[i][j]<<" ";
            out<<endl;
    }

}
void cautare(int nod)
{   int i,j;
    for(i=1;i<=n;i++)
    {
    if(t[nod]!=i) if(mat[nod][i]<cost[i]&&mat[nod][i]!=0)
    {   cost[i]=mat[nod][i];
        t[i]=nod;

    }

    }
    vazut[nod]=1;
    r=nod+1;
    if(r<=n)
    cautare(r);

}

int main()
{   int x,y,c,i,j,mini=99999,costt=0;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {   in>>x>>y>>c;
        mat[x][y]=c;
        mat[y][x]=c;

    }
    for(i=1;i<=n;i++)
    {   cost[i]=99999;

    }
    cautare(1);
   // afisare();
    s[1]=1;
    t[1]=0;
    cost[1]=0;
    for(i=1;i<=n;i++)
    {costt=costt+cost[i];

    }out<<costt;
    out<<endl;
    out<<n-1;out<<endl;
    for(i=2;i<=n;i++)
    {   out<<t[i]<<" "<<i;
    out<<endl;

    }

    return 0;
}