Pagini recente » Cod sursa (job #1384576) | Cod sursa (job #3154769) | Cod sursa (job #256618) | Cod sursa (job #2331806) | Cod sursa (job #1733966)
#include <bits/stdc++.h>
using namespace std;
unsigned int N, X, Y, I, J;
unsigned int M, D;
vector < pair <int,int> > v[30001];
queue <int> Q;
unsigned int dist[3000][3000];
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(make_pair(J,D));
v[J].push_back(make_pair(I,D));
dist[I][J] = D;
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].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;
}