Pagini recente » Cod sursa (job #2370888) | Cod sursa (job #1275757) | Cod sursa (job #2200179) | Cod sursa (job #2222736) | Cod sursa (job #3303005)
#include<bits/stdc++.h>
using namespace std;
#define MAX_N (int)3e4
#define INF (int)2e9
ifstream fin("sate.in");
ofstream fout("sate.out");
typedef struct {
int adj;
int dist;
} node;
vector<node>g[MAX_N+1];
int num_nodes,num_edges,node_1,node_2;
int dist[MAX_N+1];
void init_dist() {
for(int a=0; a<=num_nodes; a++) {
dist[a]=INF;
}
}
void bfs(int pos) {
init_dist();
queue<int>q;
dist[pos]=0;
q.push(pos);
while(!q.empty()) {
pos=q.front();
q.pop();
for (auto it:g[pos]) {
int next_pos=it.adj;
int dist_between=it.dist;
if(dist[pos]+dist_between<dist[next_pos]) {
dist[next_pos]=dist[pos]+dist_between;
q.push(next_pos);
}
}
}
}
int main() {
fin>>num_nodes>>num_edges>>node_1>>node_2;
while(num_edges--) {
int v,u,w;
fin>>v>>u>>w;
g[v].push_back({u,w});
g[u].push_back({v,-w});
}
bfs(node_1);
fout<<dist[node_2];
return 0;
}