Pagini recente » Cod sursa (job #2478344) | Cod sursa (job #389273) | Cod sursa (job #737292) | Cod sursa (job #2524500) | Cod sursa (job #3187116)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 30005
#define FILENAMEIN "sate.in"
#define FILENAMEOUT "sate.out"
vector<pair<int,int>> graf[NMAX];
int drumuri[NMAX];
queue<int> codita;
void initDinamics(int n){
for(int i = 1;i<=n;++i){
drumuri[i] = -1;
}
}
void findPath(int start){
codita.push(start);
drumuri[start] = 0;
while(codita.empty() == false){
int tatic = codita.front();
for(auto &fiut : graf[tatic]){
int cost = fiut.second;
if(drumuri[fiut.first] == -1){
drumuri[fiut.first] = drumuri[tatic] + cost;
codita.push(fiut.first);
}
}
codita.pop();
}
}
int main(void){
ofstream cout(FILENAMEOUT);
ifstream cin(FILENAMEIN);
int Q, n, start, stop;
cin >> Q >> n >> start >> stop;
for(int i = 1;i<=n;i++){
int x, y, z;
cin >> x >> y >> z;
graf[x].push_back({y,z});
graf[y].push_back({x,-z});
}
initDinamics(Q);
findPath(start);
cout << drumuri[stop];
}