Cod sursa(job #3151267)

Utilizator Paul281881818818181991919191881818Draghici Paul Paul281881818818181991919191881818 Data 20 septembrie 2023 15:27:00
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>
std::ifstream fin("dijkstra.in");
std::ofstream fout("dijkstra.out");
#define INF (1 << 30) - 1
std::vector<std::vector<std::pair<int, int>>> V;
std::vector<int> dist;
int main(){
    int n, m;
    fin >> n >> m;
    V = std::vector<std::vector<std::pair<int, int>>> (n + 1);
    dist = std::vector<int> (n + 1);
    for(int i = 1; i <= m; ++i){
        int x, y, c;
        fin >> x >> y >> c;
        V[x].push_back({y, c});
    }
    dist[1] = 0;
    for(int j = 2; j <= n; j++)
        dist[j] = INF;
    for(int i = 1; i <= n; i++){
        int ok = 0;
        for(int j = 1; j <= n; j++){
            for(std::pair<int, int> it : V[j]){
                if(dist[it.first] > dist[j] + it.second){
                    dist[it.first] = dist[j] + it.second;
                    ok = 1;
                }
            }
        }
        if(ok == 0)
            break;
    }
    for(int i = 2; i <= n; i++){
        if(dist[i] == INF) 
            fout << 0 << " ";
        else    
            fout << dist[i] << " ";
    }
}