Cod sursa(job #556543)

Utilizator idomiralinIdomir Alin idomiralin Data 16 martie 2011 10:40:02
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
# include <stdlib.h>
# include <cstdio>

using namespace std;

# define inf 10000000

struct camp
{
       int a, b, c;
       }G[250005];

int i, m, n, ok, cost[50005];
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",&G[i].a,&G[i].b,&G[i].c);
        if (G[i].a == 1) cost[G[i].b] = G[i].c;
        }
        
    for (i = 2; i <= n; i++)
    if (!cost[i]) cost[i] = inf;
    
    while (!ok)
    {
          ok = 1;
          for (i = 1; i <= m; i++)
          if (cost[G[i].b] > cost[G[i].a] + G[i].c)
                           cost[G[i].b] = cost[G[i].a] + G[i].c, ok = 0;
          }         
          
    for (i = 2; i <= n; i++)
    if (cost[i] != inf) printf("%d ",cost[i]);
    else printf("0 ");
    
return 0;
}