Cod sursa(job #950156)

Utilizator hoffen42FMI Ana hoffen42 Data 15 mai 2013 22:48:11
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>

# define NMAX 50002
# define MMAX 250002
# define INF 1<<30

using namespace std;

ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");

struct muchie{
    int m1, m2, c;
    } graf[NMAX];

int cost[NMAX], N, M;

void read()
{
    int i;
    in>>N>>M;
    for(i = 1; i <= M; i++)
    {
        in>>graf[i].m1>>graf[i].m2>>graf[i].c;
        if(graf[i].m1 == 1)
          cost[graf[i].m2] = graf[i].c;
    }

}

void Dijkstra()
{
    int i, ok;
    for(i = 2; i <= N; i++)
      if(cost[i] == 0)
        cost[i] = INF;
    do{
        ok = 1;
        for(i = 1; i <= M; i++)
        {
            if(cost[graf[i].m2] > cost[graf[i].m1] + graf[i].c)
            {
                cost[graf[i].m2] = cost[graf[i].m1] + graf[i].c;
                ok = 0;
            }

        }
    } while (!ok);

}

void print()
{
    int i;
    for(i = 2; i <= M; i++)
      if(cost[i] != INF)
        out<<cost[i]<<" ";
      else
        out<<"0 ";
}

int main()
{
    read();
    Dijkstra();
    print();
    return 0;
}