dijkstra算法71分求救,急,在线等
  • 板块题目总版
  • 楼主lghyh
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/23 16:31
  • 上次更新2024/7/23 17:48:38
查看原帖
dijkstra算法71分求救,急,在线等
800273
lghyh楼主2024/7/23 16:31

输入一个n*n的矩阵,输出第一点与最后一点的距离

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3fffffff
int n,op1,op2,a[100][100],dis[100];
bool flag[100];
void dijkstra(){
	for(int i=0;i<n;i++) dis[i]=a[0][i];
	flag[0]=true;
	dis[0]=0;
	for(int i=1;i<n;i++){
		op2=inf;
		for(int j=0;j<n;j++){
			if(!flag[j]&&dis[j]<op2){
				op1=j;
				op2=dis[j];
			}
		}
		flag[op1]=true;
		for(int j=0;j<n;j++){
			if(flag[j]||a[op1][j]==inf) continue;
			op2=dis[op1]+a[op1][j];
			if(op2<dis[j]) dis[j]=op2;
		}
	}
}
int main(){
//	freopen("main.in","r",stdin);
//	freopen("main.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			scanf("%d",&op1);
			a[i][j]=inf;
			if(op1||i==j) a[i][j]=op1;
		}
	}
	dijkstra();
	printf("%d\n",dis[n-1]);
	return 0;
}
2024/7/23 16:31
加载中...