Cod sursa(job #696628)

Utilizator algotrollNume Fals algotroll Data 28 februarie 2012 19:17:01
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>
#include<vector>
#define INF 1<<30
using namespace std;
int nN, nM;
struct _muchie
{
    int x,y,cost;
} muchie[250010];
int dist[50010];

void bford()
{
    dist[1]=0;
    for (int i=2;i<=nN;i++) dist[i]=INF;
    for (int i=1;i<=nN-1;i++)
        for (int j=1;j<=nM;j++)
        if (dist[muchie[j].x]+muchie[j].cost<dist[muchie[j].y])
            dist[muchie[j].y]=dist[muchie[j].x]+muchie[j].cost;
}

int main()
{
    FILE *fin = fopen("dijkstra.in", "r");
    fscanf (fin, "%d %d", &nN, &nM);
    for (int i=1; i<=nM; i++)
        fscanf(fin, "%d %d %d", &muchie[i].x, &muchie[i].y, &muchie[i].cost);
    bford();
    FILE *fout = fopen("dijkstra.out", "w");
    for (int i=2; i<=nN; i++)
        fprintf(fout,"%d ", dist[i]==INF?0 :dist[i] );
    return 0;
}