改不动了全RE
查看原帖
改不动了全RE
1112758
16_lln楼主2024/7/1 14:01
#include <bits/stdc++.h>
using namespace std;
int n,m,u;
int d[10005],vis[10005],a[10005][10005]/*,path[10005]*/;
void dijkstra(){
	memset(d,0x3f,sizeof(d));
	memset(vis,0,sizeof(vis));
	d[s]=0;//初始化 
	for(int i=1;i<n;i++){
		int u=0;
		for(int j=1;j<=n;j++){
			if(!vis[j]&&(u==0||d[j]<d[u])) s=j;//提取x数值 
		}
		vis[u]=1;//标记已访问数值 
		for(int g=1;g<=n;g++) d[g]=min(d[g],d[u]+a[s][g]);
	} 
} 
int main(){
	cin>>n>>m>>s;
	memset(a,0x3f,sizeof(a));
	for(int i=1;i<=n;i++) a[i][i]=0;//自己与自己的最短路径==0 
	for(int i=1;i<=m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		a[x][y]=min(a[x][y],z);//判断重复边不同权值 
	}
	dijkstra();//函数 
	for(int i=1;i<=n;i++) cout<<d[i]<<endl;//输出最短距离 
	return 0;
} 
2024/7/1 14:01
加载中...