70分,求调
查看原帖
70分,求调
1111860
rjh1012楼主2024/7/11 17:02
#include<bits/stdc++.h>
using namespace std;
int inf=2147483647;
int max1=10010;
int max2=100100;
int nedge=0,num1=0;
int chu;
int n;
int m;
int u,v,w;
struct lia{
	int to,dis,next;
}lian[100100];
int dis[10010],vis[10010],head[100010];
void add_edge(int from,int to,int dis){
	lian[++num1].next=head[from];
	lian[num1].to=to;
	lian[num1].dis=dis;
	head[from]=num1;
}
void spfa(){
	queue<int>que;
	for(int i=1;i<=n;i++){
		dis[i]=inf;
		vis[i]=0;
	}
	que.push(chu);
	dis[chu]=0;
	vis[chu]=1;
	while(!que.empty()){
		int u=que.front();
		que.pop();
		vis[u]=0;
		for(int i=head[u];i;i=lian[i].next){
			int v=lian[i].to;
			if(dis[v]>dis[u]+lian[i].dis){
				dis[v]=dis[u]+lian[i].dis;
				if(vis[v]==0){
					que.push(v);
					vis[v]=1;
				}
			}
		}
	}
}
int main(){
	cin>>n>>m>>chu;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		add_edge(u,v,w);
	}
	spfa();
	for(int i=1;i<=n;i++){
		if(chu==i){
			cout<<0<<' ';
		}else{
			cout<<dis[i]<<' ';
		}
		
	}
}

无语了

2024/7/11 17:02
加载中...