弗洛伊德算法【全源最短路径】
弗洛伊德算法 全源最短路径 #include<cstdio> #include<algorithm> using namespace std; const int inf=1000000000; const int maxv=200; int n,m; int dis[maxv][maxv]; void Floyd() { for(int k=0;k<n;k++) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(dis[i][k]!=inf&&dis[k][j]!=inf&&dis[i][k]+dis[k][j]<dis[i][j]) { dis[i][j]=dis[i][k]+dis[k][j]; } } } } } int main() { int u,v,w; fill(dis[0],dis[0]+maxv*maxv,inf); scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { dis[i][i]=0; } for(int i=0;i<m;i++) { scanf("%d%d%d",&u,&v,&w); dis[u][v]=w; } Floyd(); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%d ",dis[i][j]