输入为测试用例
输出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;
}