Cod sursa(job #2979702)

Utilizator StefannnnnStefan Stefannnnn Data 15 februarie 2023 19:23:31
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
struct node{
    int destination, value;
};
vector<vector<node>> adjacency;
int n, m, first, last, min_sum=1e9, length[1000001];
void breath(int current, int sum){
    queue<node> list;
    list.push({current, sum});
    length[current] = 0;
    while(!list.empty()){
        node city = list.front();
        list.pop();
        for(auto it:adjacency[city.destination]){
            if(length[it.destination] == -1){
                length[it.destination] = it.value + length[city.destination];
                list.push(it);
            }
        }
    }
}
int main(){
    cin>>n>>m>>first>>last;
    adjacency.resize(n+1);
    for(int i=1; i<=m; i++){
        int left, right, value;
        cin>>left>>right>>value;
        adjacency[left].push_back({right, value});
        adjacency[right].push_back({left, -value});
    }
    for(int i=0; i<=n+1; i++)
        length[i] = -1;
    breath(first, 0);
    cout<<length[last];
}