Cod sursa(job #856449)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 16 ianuarie 2013 15:23:08
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define inf 1<<30
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");

struct edge
{
   int source;
   int dest;
   int weight;
} v[250001];
int d[50001];

int main()
{
    int i,n,m;
    bool ready=0;
    fin>>n>>m;
    for (i=2;i<=n;i++) d[i]=inf;
    for (i=1;i<=m;i++) {fin>>v[i].source>>v[i].dest>>v[i].weight; if (v[i].source==1) d[v[i].dest]=v[i].weight;}
    while (!ready)
    {
        ready=1;
        for (i=1;i<=m;i++)
        {
            if (d[v[i].dest]>d[v[i].source]+v[i].weight)
            {
                d[v[i].dest]=d[v[i].source]+v[i].weight;
                ready=0;
            }
        }
    }
    for (i=2;i<=n;i++) {if (d[i]==inf) d[i]=0; fout<<d[i]<<" ";}
}