堆优化的dijkstra,尝试vector的写法过不了测试用例
查看原帖
堆优化的dijkstra,尝试vector的写法过不了测试用例
326891
illusion7楼主2020/9/26 08:26

输入为测试用例 输出0 2 1e10 4 看了两天了找不出原因

#include<bits/stdc++.h>
using namespace std;

int n,m,start,u,v,w;
vector<vector<pair<int,int> > > g(100005);
vector<int> dist(100005,1e9);

int main(){
    cin>>n>>m>>start;
    for(int i=1;i<=m;i++){
        cin>>u>>v>>w;
        g[u].push_back(make_pair(v,w));
    }
    dist[start]=0;
    priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > pq;
    pq.push(make_pair(0,start));
    while(!pq.empty()){
        int d=pq.top().first,p=pq.top().second; pq.pop();
        if(d!=dist[p]) continue;
        for(int i=0;i<g[p].size();i++){
            int D=g[p][i].first,P=g[p][i].second;
            if(dist[P]>d+D){
                dist[P]=d+D;
                pq.push(make_pair(dist[P],P));
            }
        }
    }
    for(int i=1;i<=n;i++) cout<<dist[i]<<' ';
    return 0;
}
2020/9/26 08:26
加载中...