Cod sursa(job #1124023)

Utilizator MutescuMutescu Alexandru Mutescu Data 26 februarie 2014 10:57:20
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#define Inf (1 << 30)
#define mx 50002
#define mg 250001
using namespace std;
int n,m,i,j,a[mx],ok;
struct mch{int x,y,c;};
mch v[mg];

int main()
{
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    scanf("%d %d ",&n,&m);

    for (i = 1; i <= m; i++){
        scanf("%d %d %d",&v[i].x,&v[i].y,&v[i].c);
    if(v[i].x==1)
        a[v[i].y]=v[i].c;}
      for(i=2;i<=n;i++)
        if(a[i]==0)
        a[i]=Inf;

do{ ok=1;
        for(i=1;i<=m;i++)
            if(a[v[i].y]>a[v[i].x]+v[i].c)
        {
            a[v[i].y]=a[v[i].x]+v[i].c;
            ok=0;
        }}
        while(!ok);
        for(i=2;i<=n;i++)
            printf("%d ",a[i]);

    return 0;
}