Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define pb push_back
- #define mp make_pair
- #define fi first
- #define se second
- #define EPS 1e-7
- #define INF 2000000000
- const int MODN = 1e9 + 7;
- #define rep(i, n) for (int i = 0, _n = (int)(n); i < _n; i++)
- typedef long long ll;
- typedef pair<int, int> ii;
- typedef vector<int> vi;
- typedef vector<ii> vii;
- int main(){
- int T; scanf("%d",&T);
- vector<vii> adjlist;
- while(T--){
- int v,e; scanf("%d %d",&v,&e);
- adjlist.clear();
- adjlist.resize(v+2,vii());
- while(e--){
- int f,t,w; scanf("%d %d %d",&f,&t,&w);
- adjlist[f].pb(ii(t,w));
- }
- int a,b; scanf("%d %d",&a,&b);
- vi dist(v+2, INF); dist[a]=0;
- priority_queue<ii, vector<ii>, greater<ii> >pq; pq.push(ii(0,a));
- while(!pq.empty()){
- int u=pq.top().se;
- int d=pq.top().fi;
- pq.pop();
- if(d>dist[u]) continue;
- for(ii front:adjlist[u]){
- if(dist[u]+front.se<dist[front.fi]){
- dist[front.fi]=dist[u]+front.se;
- pq.push(ii(dist[front.fi],front.fi));
- }
- }
- }
- if(dist[b]==INF) printf("NO\n");
- else printf("%d\n", dist[b]);
- }
- return 0;
- }
- /*
- 5
- 3 1 9 2 7
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement