当前位置:网站首页>(dijkstra+ shortest path + edge traversal 0 (m)) acwing 850 Dijkstra finding the shortest path II

(dijkstra+ shortest path + edge traversal 0 (m)) acwing 850 Dijkstra finding the shortest path II

2022-06-13 09:24:00 Age worry

850. Dijkstra Find the shortest path II

Topic link https://www.acwing.com/problem/content/852/
subject :
 Insert picture description here

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<utility>
#include<queue>
using namespace std;
const int N=2e5+10;
int n,m;
bool vis[N];
vector<pair<int ,int > > a[N];
int dijkstra(){
    
    priority_queue<pair<int ,int > ,vector<pair<int ,int >> ,greater<pair<int ,int >>> q;
    q.push({
    0,1});
    bool flag=0;
    int sum=0;
    while(q.size()){
    
        auto tmp=q.top();
        q.pop();
        if(vis[tmp.second]) continue;
        vis[tmp.second]=1;
        if(tmp.second==n){
    
            flag=1;
            sum=tmp.first;
        }
        for(int i=0;i<a[tmp.second].size();i++){
    
            if(!vis[a[tmp.second][i].first]){
    
                q.push({
    tmp.first+a[tmp.second][i].second,a[tmp.second][i].first});
            }

        }
    }
    if(flag) return sum;
    return -1;
}
int main(){
    
    cin>>n>>m;
    int x,y,z;
    for(int i=0;i<m;i++){
    
        scanf("%d%d%d",&x,&y,&z);
        a[x].push_back({
    y,z});
    }
    cout<<dijkstra();
    return 0;
}

原网站

版权声明
本文为[Age worry]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202270532192468.html