Pagini recente » Cod sursa (job #1780451) | Cod sursa (job #71147) | Cod sursa (job #2523792) | Cod sursa (job #167003) | Cod sursa (job #2918503)
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
const int MAX_N = 30005;
int n, m, start, finish, x, y, d;
struct edge{
int nxt;
int len;
}; vector <edge> v[MAX_N];
const int INF = 2e9;
int dist[MAX_N];
inline void bfs(){
int nod;
queue <int> q;
for(int i=1; i<=n; i++)
if(i != start)
dist[i] = INF;
q.push(start);
while(!q.empty()){
nod = q.front();
q.pop();
if(nod == finish)
break;
for(auto vecin : v[nod]){
if(dist[vecin.nxt] == INF){
if(vecin.nxt < nod)
dist[vecin.nxt] = dist[nod] - vecin.len;
else
dist[vecin.nxt] = dist[nod] + vecin.len;
q.push(vecin.nxt);
}
}
}
}
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr), fout.tie(nullptr);
fin>>n>>m>>start>>finish;
for(int e=1; e<=m; e++){
fin>>x>>y>>d;
v[x].push_back({y, d});
v[y].push_back({x, d});
}
bfs();
fout<<dist[finish];
return 0;
}