蓝桥练习06-Floyd(多源最短路径问题)

代码骑士
优质创作者: 游戏开发技术领域
2023-04-07 19:33:37

Description

汤姆想去市中心看望他的老朋友杰瑞,但是汤姆遇到了一个问题,他想知道怎样才能最快地到达市中心,现在城市的公交车站有n[2,100]个,城市里有m[1,1000]条公交线路。汤姆在第一个汽车站,杰瑞在第n个汽车站。

Input

第一行是(m,n)

接下来的m行是a,b,c (a,b是汽车站的名称,c是从a站到b站的时间)

Output

汤姆到达市中心的最短时间。

Sample Input

1 2
1 2 10
3 4
1 2 10
2 3 10
3 4 10

Sample Output

10
30

 

 

思路:裸题,Floyd算法。

 

代码:

#include<bits/stdc++.h>
#define MAX 101
#define INF 100000005
using namespace std;
int G[MAX][MAX];
int n,m;//顶点数,边数

void InitG(int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			G[i][j]=INF;
		}	
	}	
}

void OutPutG(int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<G[i][j]<<'\t';
		}	
		cout<<endl;
	}	
}

int main(){
	int i,j,w=0;//边权 
	cin>>m>>n;//m-边 ,n-顶点
	InitG(n);//初始化 
	for(int k=1;k<=m;k++){//赋权值 
		cin>>i>>j>>w;
		G[i][j]=G[j][i]=w;
	}
	//Floyd
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				G[i][j]=min(G[i][k]+G[k][j],G[i][j]);
			}
		}
	} 
	cout<<G[1][n]<<endl;
	//OutPutG(n); 
	return 0;
}

输出:

 

...全文
255 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5

社区成员

发帖
与我相关
我的任务
社区描述
考研408:数据结构、计算机组成原理、操作系统、计算机网络
学习方法考研面试 其他
社区管理员
  • 代码骑士
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧