Cod sursa(job #1827048)

Utilizator novistaAlex Staicu novista Data 11 decembrie 2016 13:29:37
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m,r,s[1205],mn,c[1205][1205],d[1205];
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int main()
{
    int h,i,j,nr,k;
    fin>>n>>m;
    r=1;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=n;j++)
            if (i!=j) c[i][j]=10000000;
    }
    for (h=1;h<=m;h++)
    {
        fin>>i>>j>>nr;
        c[i][j]=nr;
    }
    s[r]=1;
    for (i=1;i<=n;i++)
        if (i!=r)
        {
            d[i]=c[r][i];
           // t[i]=r;
        }
    d[r]=0;
   // t[r]=0;
    for (k=1;k<n;k++)
    {
        mn=10000000;
        for (j=1;j<=n;j++)
        {
            if ((mn>d[j]&&s[j]==0))
            {
                i=j;
                mn=d[j];
            }
        }
        s[i]=1;
        for (j=1;j<=n;j++)
        {
            if (d[j]>(d[i]+c[i][j]))
            {
                d[j]=d[i]+c[i][j];
                //t[j]=i;
            }
        }
    }
    for (i=2;i<=n;i++)
         if(d[i]!=100000000)
            fout<<d[i]<<" ";
            else
                fout<<0<<" ";
    fin.close();
    fout.close();
    return 0;
}