- C++
最短路径算法
- 2024-8-24 17:51:02 @
输入样例
5
0 2 3 0 8
2 0 0 0 5
3 0 0 1 0
0 0 1 0 1
8 5 0 1 0
1 5
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int g[100][100],a,b,n,h[100];
//5
//0 2 3 0 8
//2 0 0 0 5
//3 0 0 1 0
//0 0 1 0 1
//8 5 0 1 0
//1 5
int dfs(int x){
h[x] = 1;
for(int i=1;i<=n;i++){
if(h[i]==0&&g[x][i]>0){
h[i]=1;
if(g[a][x]+g[x][i]<g[a][i]){
g[a][i]=g[a][x]+g[x][i];
}
dfs(i);
h[i]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d ",g[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&g[i][j]);
if(g[i][j]==0){
g[i][j]=1e9;
}
}
}
scanf("%d%d",&a,&b);
dfs(a);
printf("%d",g[a][b]);
return 0;
}
向量容器
0 条评论
目前还没有评论...