求助
查看原帖
求助
1068071
wangft楼主2024/5/20 23:35
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int n,m,st;
struct node{
	int n;
	int l;
	int b;
	bool operator<(const node&b)const
	{return l>b.l;}
};
priority_queue<node>q;
vector<node>a[2000000];
node dp[2000000];
int main(){
  	int i,j,k,p;
  	node x,y;
  	cin>>n>>m>>st;
  	for(i=1;i<=m;i++){
  		cin>>x.n>>y.n>>x.l;
  		y.l=x.l;
  		a[x.n].push_back(y);
  		a[y.n].push_back(x); 
	  }
    for(i=1;i<=n;i++)
    dp[i].l=-1;
    dp[st].b=0;
    y.l=0; y.n=st; y.b=0;
    q.push(y);
    while(!q.empty()){
    	x=q.top();
    	q.pop();
    	if(dp[x.n].l==-1){
    		dp[x.n]=x;
    		for(i=0;i<a[x.n].size();i++){
    			y.l=a[x.n][i].l+x.l;
    			y.n=a[x.n][i].n;
    			y.b=x.n;
    			q.push(y); 
			}
		}
	}
    for(i=1;i<=n;i++)
	cout<<dp[i].l<<" ";
  }

3个WA,求调

2024/5/20 23:35
加载中...