SPFA 全MLE求助
查看原帖
SPFA 全MLE求助
657210
dp_hater楼主2023/7/10 15:30

提交记录

#include<bits/stdc++.h>
using namespace std;
int dist[10005],visit[10005];
int n,m,s;
struct node{
	int s1;
	int side;
};
void init(){
	for(int i=1;i<=n;i++){
		dist[i]=0xfffffff;
		visit[i]=0;
	}
}
vector<node>mp[10005];
void spfa(){
	queue<int>v;
	visit[s]=1;
	v.push(s);
	dist[s]=0;
	while(!v.empty()){
		int q=v.front();
		v.pop();
		visit[q]=0;
		for(int i=0;i<mp[q].size();i++){
			if(dist[mp[q][i].s1]>dist[q]+mp[q][i].side){
				dist[mp[q][i].s1]=dist[q]+mp[q][i].side;
				if(visit[mp[q][i].s1]) continue;
			}
			v.push(mp[q][i].s1);
		}
	}
}
signed main(){
	cin>>n>>m>>s;
	init();
	for(int i=1;i<=m;i++){
		node h;
		int u,v,w;
		cin>>u>>v>>w;
		h.s1=v;
		h.side=w;
		mp[u].push_back(h);
	}
	spfa();
	for(int i=1;i<=n;i++){
		cout<<dist[i]<<' ';
	}
	cout<<endl;
	return 0;
}

求调

2023/7/10 15:30
加载中...