Cod sursa(job #1509737)

Utilizator dex4Darjan Catalin dex4 Data 24 octombrie 2015 11:48:21
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define nmax 50005
#define mmax 250005
#define inf 20000000

using namespace std;

int m, n, dist[nmax], viz[nmax];
vector < pair<int, int> > T[nmax];

void read(){
    int x, y, cost;
    ifstream f("dijkstra.in");
    f >> n >> m;
    for(int i=1; i<=m; i++){
        f >> x >> y >> cost;
        T[x].push_back(make_pair(y, cost));
    }
}

void BlF(){
    int i, j;
    for(i=1; i<=n; i++){
        for(j=0; j<T[i].size(); j++){
            if(dist[i] + T[i][j].second < dist[T[i][j].first])
                dist[T[i][j].first] = dist[i] + T[i][j].second;
            viz[i] = 1;
        }
    }
}

int main()
{
    read();
    dist[1] = 0;
    for(int i=2; i<=n; i++)
        dist[i] = inf;
    BlF();
    ofstream g("dijkstra.out");
    for(int i=2; i<=n; i++)
        if(viz[i])
            g << dist[i] << " ";
        else
            g << 0 << " ";
    return 0;
}