Cod sursa(job #2209451)

Utilizator stanbianca611Stan Bianca stanbianca611 Data 3 iunie 2018 15:00:59
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("apm.in");
ofstream g ("apm.out");
int a[805][805], d[805], t[805], s[805];
int n, m;
const int oo=1005;
void initializare()
{
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
        if(i!=j) a[i][j]=oo;
}
void citire()
{
    for(int i=1; i<=m; i++)
    {
        int x, y, z;
        f>>x>>y>>z;
        a[x][y]=z;
    }
    for(int i=1; i<=n; i++)
        {
            d[i]=oo;
            t[i]=0;
        }
    d[1]=0; s[1]=1;

}
void prim()
{
    int minn, x, k=1, i;
    while(k<n)
    {
        minn=oo;
        for(i=1; i<=n; i++)
    {
        if(d[i]<minn && s[i]==0) { minn=d[i]; x=i; s[i]=1;k++;}
    }
    for(i=1; i<=n; i++)
    {
        if(a[x][i]!=oo) {d[i]=a[x][i]; t[i]=x;}
    }
    }

}
int main()
{
    int suma=0;
    f>>n>>m;
    initializare();
    citire();
    prim();
    for(int i=1; i<=n; i++)
        suma+=d[i];
        g<<suma;
    return 0;
}