Pagini recente » Monitorul de evaluare | Cod sursa (job #3314844) | Cod sursa (job #3349474) | Cod sursa (job #3314224) | Cod sursa (job #3339613)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct drum{
int loc,dist;
};
vector<vector<drum>> Drum(30005);
vector<int> Dist(30005);
vector<bool> vizitat(30005);
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,M,X,Y;
fin>>N>>M>>X>>Y;
for(int i=1;i<=M;i++){
int s1,s2,d;
fin>>s1>>s2>>d;
Drum[s1].push_back({s2,d});
Drum[s2].push_back({s1,-d});
}
queue<int> q;
q.push(X);
vizitat[X]=true;
Dist[X]=0;
while(!q.empty()){
int crt=q.front();
q.pop();
if(crt==Y)
break;
for(auto vecin : Drum[crt]){
if(!vizitat[vecin.loc]){
vizitat[vecin.loc]=true;
Dist[vecin.loc]=Dist[crt]+vecin.dist;
q.push(vecin.loc);
}
}
}
fout<<Dist[Y];
return 0;
}