2 条题解

  • 0
    @ 2025-10-8 16:57:36

    题目:无向图的直径

    给定一个无向图,包含n个顶点和m条边,每条边的权重均为1。请计算该图中所有顶点对之间最短路径的最大值,即“直径”。

    解题思路:

    1. 使用Floyd-Warshall算法计算所有顶点对之间的最短路径,适用于求解全源最短路径问题。
    2. 初始化距离矩阵,将每个顶点到自身的距离设为0,其余距离初始化为一个较大值(0x0f0f0f0f)。
    3. 读入m条边,更新距离矩阵中对应顶点间的距离为1(无向图,边权为1)。
    4. 通过三重循环(中间点、起点、终点)执行Floyd-Warshall算法,更新所有点对的最短路径。
    5. 遍历所有顶点对,找出最短路径中的最大值,即为图的直径。
    #include<bits/stdc++.h>
    using namespace std;
    int d[110][110];
    int main()
    {
        int n, m;
        scanf("%d%d", &n, &m);
        memset(d, 0x0f, sizeof(d));
        for(int i=1; i<=n; i++) d[i][i] = 0;
        for(int i=1, x, y; i<=m; i++) 
        {
            scanf("%d%d", &x, &y);
            d[x][y] = d[y][x] = 1;
        }
        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 ans = 0;
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)  // 原代码此处可能存在笔误,应为j<=n
                if(d[i][j] != 0x0f0f0f0f)
                    ans = max(ans, d[i][j]);
        printf("%d\n", ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:57:14
      #include<bits/stdc++.h>
      using namespace std;
      int d[110][110];
      int main()
      {
          int n,m;
          scanf("%d%d",&n,&m);
          memset(d,0x0f,sizeof(d));
          for(int i=1;i<=n;i++) d[i][i]=0;
          for(int i=1,x,y;i<=m;i++) 
          {
              scanf("%d%d",&x,&y);
              d[x][y]=d[y][x]=1;
          }
          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 ans=0;
          for(int i=1;i<=n;i++)
              for(int j=1;j<=m;j++)
                  if(d[i][j]!=0x0f0f0f0f)
                      ans=max(ans,d[i][j]);
          printf("%d\n",ans);
          return 0;
      }
      • 1

      *【多源最短路floyd 】GF和猫咪的玩具

      信息

      ID
      1474
      时间
      1000ms
      内存
      64MiB
      难度
      3
      标签
      递交数
      54
      已通过
      28
      上传者