Pagini recente » Cod sursa (job #2443461) | Cod sursa (job #344349) | Cod sursa (job #2529467) | Cod sursa (job #322230) | Cod sursa (job #2524905)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int NMAX = 100005;
struct Edge {
int node;
int cost;
};
Edge aux;
vector <Edge> G[NMAX];
queue < int > Q;
long long visited[NMAX];
int N, M, X, Y;
int x, y, c;
void BFS(int node, int finish)
{
Q.push(node);
Edge aux;
visited[node] = 0;
while(!Q.empty()) {
node = Q.front();
Q.pop();
for(size_t i = 0; i < G[node].size(); ++i) {
aux = G[node][i];
if(visited[aux.node] == -1) {
visited[aux.node] = visited[node] + aux.cost;
if(aux.node == finish) {
fout << visited[aux.node]<< "\n";
return;
}
Q.push(aux.node);
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(NULL);
fin >> N >> M >> X >> Y;
memset(visited, -1, sizeof(visited));
for(int i = 0; i < M; i++) {
fin >> x >> y >> c;
aux.node = y;
aux.cost = c;
G[x].push_back(aux);
aux.node = x;
aux.cost = -c;
G[y].push_back(aux);
}
BFS(X, Y);
}