Cod sursa(job #2488840)

Utilizator razvandraghiciDraghici Razvan razvandraghici Data 7 noiembrie 2019 18:02:00
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>

using namespace std;

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

int p, u, i, a, b, c[100001], ct[501][501], n, m, viz[50001], cost[50001];
vector <int> v[50001];

int main()
{
    fin>>n>>m;
    for(i = 1; i <= m; i++){
        fin>>a>>b>>ct[a][b];
        ct[b][a] = ct[a][b];
        v[a].push_back(b);
        v[b].push_back(a);
    }

    p = 1;
    u = 1;
    c[u] = 1;
    viz[1] = 1;
    while(p <= u){
        for(i = 0; i < v[p].size(); i++){
            if(viz[v[c[p]][i]] == 0){
                u ++;
                c[u] = v[c[p]][i];
                viz[v[c[p]][i]] = 1;
                cost[v[c[p]][i]] = cost[c[p]] + ct[c[p]][v[c[p]][i]];
            }
            else
                if(cost[v[c[p]][i]] > cost[c[p]] + ct[c[p]][v[c[p]][i]])
                    cost[v[c[p]][i]] = cost[c[p]] + ct[c[p]][v[c[p]][i]];
        }
        p ++;
    }

    for(i = 2; i <= n; i ++)
        fout<<cost[i]<<" ";

    return 0;
}