Cod sursa(job #1708031)

Utilizator Tomi98Osvath Tamas Tomi98 Data 26 mai 2016 13:37:19
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <vector>
#include <deque>
#define INF 1<<30

using namespace std;

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

struct nod{
    int vecin, cost;
}c;
deque <int > C;
vector <nod > v[50010];
int costMin[50010], m, n, node, new_node;

void bfs(int n){
    node = n;
    C.push_back(node);
    while (!C.empty()){
        node = C.front();
        for (int i = 0; i < int(v[node].size()); i++){
            new_node = v[node][i].vecin;
            if (costMin[node] + v[node][i].cost < costMin[new_node]){
                costMin[new_node] = costMin[node] + v[node][i].cost;
                C.push_back(new_node);
            }
        }
        C.pop_front();
    }
}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= m; i++){
        int a, b;
        fin >> a >> b >> c.cost;
        c.vecin = b;
        v[a].push_back(c);
    }
    for (int i = 2; i <= n; i++)
        costMin[i] = INF;
    bfs(1);
    for (int i = 2; i <= n; i++)
        if (costMin[i] == INF) fout << "0 ";
            else fout << costMin[i] << " ";
    return 0;
}