Pagini recente » Cod sursa (job #2498857) | Cod sursa (job #2222565) | Cod sursa (job #114082) | Cod sursa (job #2533344) | Cod sursa (job #1438880)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define MAX_N 30005
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector <int> G[MAX_N], D[MAX_N];
int dist[MAX_N], X, Y;
void BFS(int nod)
{
queue <int> Q;
Q.push(nod);
while(!Q.empty())
{
int n = Q.front();
for(int i = 0; i < G[n].size(); i++)
{
if(dist[G[n][i]] == 0)
{
if(G[n][i] > n)
dist[G[n][i]] = dist[n] + D[n][i];
else
dist[G[n][i]] = dist[n] - D[n][i];
Q.push(G[n][i]);
if(G[n][i] == Y)
return;
}
}
Q.pop();
}
}
int main()
{
int N, M, a, b, c, i;
f >> N >> M >> X >> Y;
for(i = 1; i <= M; i++)
{
f >> a >> b >> c;
G[a].push_back(b);
G[b].push_back(a);
D[a].push_back(c);
D[b].push_back(c);
}
BFS(X);
g << dist[Y];
return 0;
}