Pagini recente » Cod sursa (job #3290786) | Cod sursa (job #108456) | Cod sursa (job #2636379) | Cod sursa (job #2169475) | Cod sursa (job #1322173)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int N = 30001;
int n, m, x, y;
int cost[N];
queue <int> q;
struct vecin
{
int nod, dst;
};
vector <vecin> a[N];
void citire()
{
in >> n >> m >> x >> y;
for(int i = 1; i <= m; i++)
{
int k, l, d;
in >> k >> l >> d;
vecin aux;
aux.nod = l;
aux.dst = d;
a[k].push_back(aux);
aux.nod = k;
a[l].push_back(aux);
}
}
int main()
{
citire();
for(int i = 1; i <= n; i++)
cost[i] = -1;
if(x > y)
{
int aux = x;
x = y;
y = aux;
}
cost[x] = 0;
q.push(x);
while(!q.empty())
{
int k = q.front();
q.pop();
for(size_t i = 0; i < a[k].size(); i++)
{
int l = a[k][i].nod;
int d = a[k][i].dst;
if(cost[l] == -1)
{
if(k < l)
cost[l] = cost[k] + d;
else
cost[l] = cost[k] - d;
q.push(l);
}
}
}
out << cost[y] << '\n';
return 0;
}