图论基本算法练习
小呆要去位于 A 市的皮球家。小呆来到 A 市的车站,买了一张 A 市的地图,他发现这里的地形非常的复杂。A 市的街道一共有 N 个路口,M 条道路,每条道路连接着两个路口,并且有各自的长度。目前,小呆所在的车站位于编号为 1 的路口,而皮球家所在的路口编号为 N,小呆准备打出租车去,当然,路程越小,付的钱就越少。问题摆在眼前:请帮助小呆寻找一条最短路径,使得他可以花最少的钱到达皮球家。
输入
第一行有两个整数 N, M (N≤1000) 分别代表路口数和街道数。以下有 M 行用以描述各个街道,每行有三个数字 P1, P2, L,分别代表此街道起点编号,此街道终点编号以及此街道的长度。保证所给的数据可以构成连通图。
输出
一行一个整数,说明最短路径的长度。
C
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<vector > mp(n+1,vector(n+1,INT_MAX));
int p1,p2,l;
for(int i=0;i<m;++i){
cin>>p1>>p2>>l;
mp[p1][p2]=l;
mp[p2][p1]=l;
}
vector dis(n+1,INT_MAX);
vector visited(n+1,false);
dis[1]=0;
while(1){
int index=-1;
int mind=INT_MAX;
for(int i=1;i<=n;++i){
if(visited[i])continue;
if(dis[i]<mind){
mind=dis[i];
index=i;
}
}
if(index==n){
cout<<dis[index]<<endl;
return 0;
}
visited[index]=true;
for(int i=1;i<&

这篇博客主要介绍了图论基本算法的应用,通过一个实际问题——寻找从车站到皮球家的最短路径来讲解。作者给出了C、Python和Java三种语言的实现,分别实现了Dijkstra算法来解决这个问题。此外,还提到了完美数的概念并提供了求解小于给定数的所有完美数之和的Java代码实现。
最低0.47元/天 解锁文章
168万+

被折叠的 条评论
为什么被折叠?



