Pagini recente » Cod sursa (job #2732164) | Cod sursa (job #3195271) | Cod sursa (job #148902) | Cod sursa (job #3138030) | Cod sursa (job #2525680)
#include <iostream>
#include <vector>
#include <fstream>
#define nod first
#define cost second
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int dim = 30005;
int n,m,x,y,nr,dist[dim],q[dim],st = 0,dr=-1;
vector <pair<int,int> > vec[dim];
void BFS(int start)
{
dist[start] = 0;
q[++dr] = start;
while (st <= dr)
{
int a = q[st++];
for (auto v:vec[a])
{
if (dist[v.nod] == -1)
{
if (v.nod < a)
{
dist[v.nod] = dist[a] - v.cost;
q[++dr] = v.nod;
}
else
{
dist[v.nod] = dist[a] + v.cost;
q[++dr] = v.nod;
}
}
}
}
}
int main()
{
in >> n >> m >> x >> y;
for (int i=1; i<=n; i++) dist[i] = -1;
for (int i=1,a,b,c; i<=m; i++)
{
in >> a >> b >> c;
vec[a].push_back({b,c});
vec[b].push_back({a,c});
}
BFS(x);
out << dist[y];
return 0;
}