Pagini recente » Cod sursa (job #2233238) | Cod sursa (job #2253759) | Cod sursa (job #2277190) | Cod sursa (job #2231514) | Cod sursa (job #1733969)
#include <bits/stdc++.h>
using namespace std;
int N, X, Y, I, J;
int M, D;
vector < pair <int,int> > v[30001];
queue <int> Q;
bool seen[30001];
int node;
int i;
int sol[30001];
int main ()
{
ifstream fin ("sate.in");
fin >> N >> M >> X >> Y;
for (i=1; i<=M; i++)
{
fin >> I >> J >> D;
v[I].push_back(make_pair(J,D));
v[J].push_back(make_pair(I,D));
}
fin.close();
Q.push(X);
seen[X] = 1;
sol[X] = 1;
while (!Q.empty())
{
node = Q.front();
Q.pop();
for (i=0; i<v[node].size(); i++)
if (seen[v[node][i].first] == 0)
{
seen[v[node][i].first] = 1;
if (v[node][i].first > node)
sol[v[node][i].first] = sol[node] + v[node][i].second;
else
sol[v[node][i].first] = sol[node] - v[node][i].second;
Q.push(v[node][i].first);
}
}
ofstream fout ("sate.out");
fout << sol[Y]-1;
fout.close();
return 0;
}