Cod sursa(job #2111693)

Utilizator seby2341Mesca Sebastian seby2341 Data 22 ianuarie 2018 16:33:50
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
const int INF=1e5 + 15;
bool sel[101];
int a[101][101],d[101],t[101],n,m,x,y,c,Min,k;
void read()
{
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= m; ++i)
        scanf("%d %d %d", &x, &y, &c), a[x][y]=c;

}
void init()
{
    for (int i = 1; i <= n; ++i)
        for (int j = 1 ; j <= n; ++j)
            if (!a[i][j] && i!=j) a[i][j]=INF;
}
void dijkstra()
{
    for (int i = 1; i <= n; ++i)
    {
        Min=INF;
        for (int j = 1; j <= n; ++j)
           if (d[j]<Min && !sel[j]) Min=d[j], k=j;

        sel[k]=true;

        for (int j = 1; j <= n; ++j)
            if (d[j]>d[k]+a[k][j] && !sel[j]) d[j]=d[k]+a[k][j],t[j]=k;
    }
}

int main()
{
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    read();
    init();

    for (int i = 1; i <= n; ++i)
        t[i]=0,d[i]=INF;
    d[1]=0;
    dijkstra();

for (int i = 2; i <= n; ++i)
    printf("%d ", d[i]);
    return 0;
}