Cod sursa(job #2127128)

Utilizator DR27092000Bilcu Dragos Gabriel DR27092000 Data 10 februarie 2018 12:49:00
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int a[101][101],n,m,d[1001],p[1001];
const int inf=10000;
void citire()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y,c;
        f>>x>>y>>c;
        a[x][y]=c;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
    {
        if(i==j) a[i][j]=0;
       else if(!a[i][j]) a[i][j]=inf;
    }
}
void dijkstra(int k)
{int j,minn;
    for(int i=1;i<=n;i++)
    {
        d[i]=a[k][i];
        p[i]=0;
    }
    p[k]=1;
    for(int k=1;k<n;k++)
    {
        minn=inf+1;
        for(int i=2;i<=n;i++)
        if(minn>d[i] && !p[i]){minn=d[i];j=i;}
        for(int i=1;i<=n;i++)
            if(d[i]>d[j]+a[j][i])
            d[i]=d[j]+a[j][i];
        p[j]=1;
    }
}


int main()
{citire();
dijkstra(1);
for(int i=2;i<=n;i++)
   g<<d[i]<<" ";



    return 0;
}