Pagini recente » Cod sursa (job #3285724) | Cod sursa (job #2157031) | Cod sursa (job #1125181) | Cod sursa (job #1457893) | Cod sursa (job #1581476)
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#include <utility>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
struct data {int destNode, dist; };
vector < data > edge[30050];
int visited[30050], distanceLength[30050];
void BFS(int node)
{
queue <int> NodeQ;
visited[node] = 1;
distanceLength[node] = 0;
NodeQ.push(node);
while (!NodeQ.empty())
{
node = NodeQ.front();
for (int i = 0; i < edge[node].size(); ++i)
{
if (!visited[edge[node][i].destNode])
{
visited[edge[node][i].destNode] = 1;
distanceLength[edge[node][i].destNode] = distanceLength[node] + edge[node][i].dist;
NodeQ.push(edge[node][i].destNode);
}
}
NodeQ.pop();
}
}
int main()
{
int n, m, x, y;
int a, b, dist;
data temp;
fin >>n >>m >>x >>y;
for (int i = 0; i < m; ++i)
{
fin >>a >>b >>dist;
temp.destNode = b;
temp.dist = dist;
edge[a].push_back(temp);
temp.destNode = a;
temp.dist = -dist;
edge[b].push_back(temp);
}
BFS(x);
fout <<distanceLength[y];
return 0;
}