Pagini recente » Cod sursa (job #13121) | Cod sursa (job #2205035) | Cod sursa (job #3268084) | Cod sursa (job #1482672) | Cod sursa (job #3146302)
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
#define INFILE "sate.in"
#define OUTFILE "sate.out"
const int VMAX = 3e5 + 2;
struct Edge {
int node;
int price;
};
int n, m, vill1, vill2;
vector<Edge> adj[VMAX];
int dist[VMAX];
bool viz[VMAX];
void bfs(int source){
queue<int> q;
q.push(source);
dist[source] = 0;
while(!q.empty()){
int node = q.front();
q.pop();
for(int i = 0; i < adj[node].size(); ++i){
Edge to = adj[node][i];
if(!viz[to.node]){
viz[to.node] = true;
dist[to.node] = dist[node] + to.price;
q.push(to.node);
}
}
}
}
void solve(){
cin >> n >> m >> vill1 >> vill2;
for(int i = 0; i < m; ++i){
int node1, node2, price;
Edge e1, e2;
cin >> node1 >> node2 >> price;
e1.node = node2;
e1.price = price;
e2.node = node1;
e2.price = -price;
adj[node1].push_back(e1);
adj[node2].push_back(e2);
}
bfs(vill1);
cout << dist[vill2] << '\n';
}
int main(){
ios_base::sync_with_stdio(false);
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
cin.tie(nullptr);
cout.tie(nullptr);
solve();
return 0;
}