Pagini recente » Cod sursa (job #1409609) | Cod sursa (job #1136708) | Cod sursa (job #1602299) | Cod sursa (job #2132354) | Cod sursa (job #2979702)
#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];
}