文章

27

粉丝

0

获赞

130

访问

8.3k

头像
P1565 最短路 答疑提问:
jsd VIP
P1565 中国科学院大学2021年机试题
发布于2025年2月23日 19:43
阅读数 238

#include<bits/stdc++.h>
using namespace std;

#define max1 10000000

const int maxn=1000;
int gmap[maxn][maxn];
int visited[maxn];
int dist[maxn];



int dj(int n){//n表示n结点
	dist[1] = 0;
	//先初始化dist数组
	for(int i = 2;i<=n;i++){
		if(gmap[1][i]>0){
			dist[i] = gmap[1][i];
		}else{
			dist[i] = max1;//表示不可达 
		}
	} 
	
	

	int k;//记录最小元素下标 
	for(int i = 1;i<n;i++){//n-1次 结点进去 
	
		int min = max1;
		
		for(int j = 2;j<=n;j++){
			if(dist[j]<min&&!visited[j]){
				min = dist[j];
				k = j;
			}
		}

		visited[k] = 1;
		
		//更新距离
		
		for(int l = 2;l<=n;l++){
			if(!visited[l]&&gmap[k][l]!=0&&dist[l] > dist[k] + gmap[k][l]){
				dist[l] = dist[k] + gmap[k][l];
			}
		} 
		
		
	}


	
}
int main(){
	int n,m;
	while(cin>>n>>m){
		memset(visited,0,sizeof(visited));
		memset(gmap,0,sizeof(gmap));
		memset(dist,0,sizeof(dist));
		//n为结点数 m为边 
		if(n==0&&m==0)break...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发