Cod sursa(job #1614787)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 26 februarie 2016 09:32:00
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <fstream>
#include <math.h>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
//#include <unordered_map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <bitset>
#include <map>
#define MAX 500000000000
//#include <iostream>
using namespace std;
//ifstream cin("jocul.in");
//ofstream cout("jocul.out");
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
vector<int> nods[50003];
vector<int> costs[50003];
int x[50004];
void bellman(vector<int> costs[], vector<int> nods[], int vec[], int n)
{
    int p = 0;
    while(p < n){
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < nods[i].size(); j++){
                if(vec[nods[i][j]] > costs[i][j] + vec[i])
                    vec[nods[i][j]] = costs[i][j] + vec[i];
            }
        }
    p++;
    }
}
int main()
{
    int n, m, a, b, c;
    cin >> n >> m;
    for(int i = 0; i < m; i++){
        cin >> a >> b >> c;
        nods[a - 1].push_back(b - 1);
        costs[a - 1].push_back(c);
    }
    for(int i = 1; i <= 50000; i++)
        x[i] = 1<<29;
    bellman(costs, nods, x, n);
    for(int i = 1; i < n; i++)
        cout << (x[i] == 1<<29 ? 0 : x[i]) << " ";
    return 0;
}