Cod sursa(job #2176300)

Utilizator bertifloreaFlorea Ioan Albert bertiflorea Data 16 martie 2018 22:21:42
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <values.h>
#define inf 21000
using namespace std;

ofstream g("dijkstra.out");

int mat[10000][10000],s[10000],d[10000],n,m;

void citire()
{
    int x,y,z;
    ifstream f("dijkstra.in");
    f>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<i;j++)
            mat[i][j]=mat[j][i]=inf;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>z;
        mat[x][y]=z;
    }
    f.close();
}

int main()
{
    citire();
    int i,j,r=1;
    s[r]=1;
    for(i=1;i<=n;i++)
        d[i]=mat[r][i];
    int mini,poz;
    for(i=1;i<=n;i++)
    {
        mini=inf;
        for(j=1;j<=n;j++)
            if(s[j]==0)
                if(d[j]<mini)
                {
                    mini=d[j];
                    poz=j;
                }
        s[poz]=1;
        for(j=1;j<=n;j++)
            if(s[j]==0)
                if(d[j]>d[poz]+mat[poz][j])
                {
                    d[j]=d[poz]+mat[poz][j];
                 //   t[j]=poz;
                }
    }
    for(i=1;i<=n;i++)
        if(r!=i && d[i]!=inf)
            g<<d[i]<<' ';
    return 0;
}