Cod sursa(job #1820215)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 1 decembrie 2016 13:21:53
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#define INF 1000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int a[1250][1250],s[1250],d[1250];
int main()
{
    int n,i,j,m,x,y,indmin,minim;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            a[i][j]=a[j][i]=INF;
        }
    }
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        fin>>a[x][y];
    }
    s[1]=1;
    for(i=2;i<=n;i++)
        d[i]=a[1][i];
    for(i=2;i<=n;i++)
    {
        minim=INF;
        for(j=2;j<=n;j++)
            if(s[j]==0)
            {
                if(minim>d[j])
                {
                    minim=d[j];
                    indmin=j;
                }
            }
        s[indmin]=1;
        for(j=2;j<=n;j++)
            d[j]=min(d[j],minim+a[indmin][j]);
    }
    for(i=2;i<=n;i++)
        if(d[i]!=INF)
        {
            fout<<d[i]<<' ';
        }
        else
            fout<<0<<' ';
    return 0;
}