1 条题解

  • 0
    @ 2025-10-8 16:51:46

    D04 最短路 Floyd 算法

    // Floyd 算法 O(n^3)
    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=1010;
    int n,m,a,b,c;
    int d[N][N];
    
    void 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]);
    }
    int main(){
      cin>>n>>m;
      memset(d,0x3f,sizeof d);
      for(int i=1; i<=n; i++) d[i][i]=0;
      for(int i=0; i<m; i++){
        cin>>a>>b>>c;
        d[a][b]=d[b][a]=min(d[a][b],c); //处理重边
      }
      floyd();
      for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
          printf("%d ",d[i][j]);
        puts("");
      }
    }
    
    • 1

    信息

    ID
    692
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    161
    已通过
    49
    上传者