Pagini recente » Cod sursa (job #2183977) | Cod sursa (job #1002644) | Cod sursa (job #331477) | Cod sursa (job #1217320) | Cod sursa (job #1733930)
#include <bits/stdc++.h>
using namespace std;
unsigned int N, X, Y, I, J;
unsigned int M, D;
vector <int> v[30001];
queue <int> Q;
unsigned int dist[23000][23000];
bool seen[30001];
unsigned int node;
unsigned 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(J);
v[J].push_back(I);
dist[I][J] = dist[J][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]] == 0)
{
seen[v[node][i]] = 1;
if (v[node][i] > node)
sol[v[node][i]] = sol[node] + dist[v[node][i]][node];
else
sol[v[node][i]] = sol[node] - dist[v[node][i]][node];
Q.push(v[node][i]);
}
}
ofstream fout ("sate.out");
fout << sol[Y]-1;
fout.close();
return 0;
}