Pagini recente » Cod sursa (job #201118) | Cod sursa (job #410969) | Cod sursa (job #556614) | Cod sursa (job #1045979) | Cod sursa (job #559620)
Cod sursa(job #559620)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
#define maxN 30005
#define PB push_back
#define INF (1 << 30)
int N, M, X, Y;
int dist[maxN];
vector < pair <int, int> > lista[maxN];
queue < int > Q;
int main()
{
ifstream f("sate.in");
ofstream g("sate.out");
f >> N >> M >> X >> Y;
for (int i = 1; i <= M; ++ i)
{
int x, y, d;
f >> x >> y >> d;
lista[x].PB ( make_pair (y, d) );
lista[y].PB ( make_pair (x, d) );
}
Q.push(X);
dist[X] = 0;
for ( ; ! Q.empty() ; )
{
int nod = Q.front();
Q.pop();
for (unsigned int i = 0; i < lista[nod].size(); ++ i)
{
int nod2 = lista[nod][i].first;
if (dist[nod2] || nod2 == X)
continue;
if (nod2 > nod)
dist[nod2] = dist[nod] + lista[nod][i].second;
else
dist[nod2] = dist[nod] - lista[nod][i].second;
if (nod2 == Y)
{
g << dist[Y];
return 0;
}
Q.push (nod2);
}
}
}