代码拉取完成,页面将自动刷新
#include<iostream>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 1010;
const int INF = 1e9;
int d[N][N]; //d[a][b]表示a到b的最短距离
int n , m;
void print_d(){
cout<<"d = "<<endl;
for(int i = 1 ; i <= n ; ++i){
for(int j = 1 ; j <= n ; ++j){
cout<<d[i][j]<<" ";
}
cout<<endl;
}
}
void init_floyd(){
for(int i = 1 ; i <= n ; ++i)
for(int j = 1 ; j <= n ; ++j)
d[i][j] = (i == j) ? 0 : INF;
print_d();
}
int floyd(){
for(int k = 1 ; k <= n ; ++k)
for(int i = 1 ; i <= n ; ++i)
for(int j = 1 ; j <= n ; ++j)
d[i][j] = min(d[i][j] , d[i][k] +d[k][j]);
return d[1][n];
}
// 3 3
// 1 2 2
// 2 3 1
// 1 3 4
int main(){
// cout<<"sizeof = "<<sizeof(d)<<endl;
// memset(d , 0x3f , sizeof(d));
// cout<<INF<<endl;
// if (i == j)
// d[i][j] = 0;
// else
// d[i][j] = INF;
scanf("%d%d" , &n , &m);
init_floyd();
for(int i = 1 ; i <= m ; i++){
int a , b , c;
scanf("%d%d%d" , &a,&b,&c);
d[a][b] = min(d[a][b] , c);///防止重边
}
cout<<floyd()<<endl;
printf("\nC 艹 mother fucker\n");
system("pause");
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。