Pagini recente » Cod sursa (job #1047130) | Cod sursa (job #1480300) | Cod sursa (job #2522850) | Cod sursa (job #1065960) | Cod sursa (job #3164591)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int LMAX = 30005;
vector <pair<int,int>> L[LMAX];
int x,y, dist[LMAX];
bool viz[LMAX];
void bfs() {
queue <int> Q;
Q.push(x);
viz[x] = true;
while (!Q.empty() && !dist[y]) {
int node = Q.front();
Q.pop();
for (pair<int,int> vec : L[node]) {
if (!viz[vec.first]) {
viz[vec.first] = true;
if (vec.first < node) {
dist[vec.first] =dist[node]-vec.second;
}
else {
dist[vec.first] = dist[node] + vec.second;
}
Q.push(vec.first);
}
}
}
}
int main() {
int n, m;
fin>>n>>m>>x>>y;
for (int i = 0; i<m;i++) {
int a,b,c;
fin>>a>>b>>c;
L[a].push_back({b,c});
L[b].push_back({a,c});
}
bfs();
fout<<dist[y];
fin.close();
fout.close();
return 0;
}