本质:DP,搜索
数据结构:邻接矩阵(二维数组)
核心实现代码
#include<iostream>
#define INF 0x3f3f3f3f
using namespace std;
const int N=1010;
int dp[N][N];
int u,v,w;
int n,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) dp[i][j]=0;
else dp[i][j]=INF;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>u>>v>>w;
dp[u][v]=w;
dp[v][u]=w;
}
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
return 0;
}