Cod sursa(job #2198662)

Utilizator dragonboboc vasile dragon Data 24 aprilie 2018 23:20:53
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#include <utility>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
vector< pair<int,int> > S[50001];
int B[50001];
bool B1[50001];

void DFS(int node){
    for(int j=S[node].size()-1;j>=0;j--){
    int top=S[node][j].first;
    if(B1[top]==0){
    B[top]=B[node]+S[node][j].second;
    B1[top]=1;
    DFS(top);
    }
    else if(B[top]>B[node]+S[node][j].second){
        B[top]=B[node]+S[node][j].second;
        DFS(top);
    } } }
int main()
{
    int n,m,x,y,pr;
    in>>n>>m;
    for(int i=1;i<=m;i++){
        in>>x>>y>>pr;
        S[x].push_back(make_pair(y,pr));

        }
        B1[1]=1;
        DFS(1);

    for(int i=2;i<=n;i++)
        out<<B[i]<<' ';
    return 0;
}