为啥不对啊?
查看原帖
为啥不对啊?
221522
张睿洲Richard楼主2021/7/22 17:28
#include<bits/stdc++.h>
using namespace std;
struct node{
	int v,w;
	node(){}
	node(int vv,int ww){
		v=vv;
		w=ww;
	}
};
vector<node>g[110000];
int n,m,s,t,d[110000],u,v,w;
set<pair<int,int> >heap;
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m>>s;
	for(int i=0;i<m;i++){
		cin>>u>>v>>w;
		g[u].push_back(node(v,w));
		g[v].push_back(node(u,w));
	}
	memset(d,0x3f,sizeof d);
	d[s]=0;
	heap.insert(make_pair(0,s));
	while(heap.size()){
		int mind=heap.begin()->first,v=heap.begin()->second;
		heap.erase(heap.begin());
		for(int i=0;i<g[v].size();i++){
			if(d[g[v][i].v]>d[v]+g[v][i].w){
				heap.erase(make_pair(d[g[v][i].v],g[v][i].v));
				d[g[v][i].v]=d[v]+g[v][i].w;
				heap.insert(make_pair(d[g[v][i].v],g[v][i].v));
			}
		}
	}
	for(int i=1;i<=n;i++)cout<<d[i]<<" ";
	return 0;
}

一组没过全红了

2021/7/22 17:28
加载中...