1 条题解

  • 1
    @ 2023-3-17 17:17:21
    #include <bits/stdc++.h>
    using namespace std;
    int d[1003][1003];//储存前面一个点到后面一个的距离
    signed main()
    
    {
        ios::sync_with_stdio(0);
        cin.tie(0);//优化,可以不管
        int n, v0;
        cin >> n >> v0;
        memset(d, 0x3f, sizeof(d));//初始化极大值
        string s1;
        for (int i = 1; i <= n; i++)//读图
        {
            for (int j = 1; j <= n; j++)
            {
                cin >> s1;
                if (s1 != "-")
                {
                    d[i][j] = stoi(s1);
                }
            }
        }
    
        for (int j = 1; j <= n; j++)//v0到每个点
        {
            for (int l = 1; l <= n; l++)//每个点到其他点
    
            {d[v0][j] = min(d[v0][j], d[v0][l] + d[l][j]);//如果距离比原来小重置
            }
        }
        for (int i = 1; i <= n; i++)
        {
            if (i != v0 and d[v0][i] <= 1100000)
            {
                printf("(%d -> %d) = %d\n", v0, i, d[v0][i]);
    
            }
            else if (i != v0)
            {
                printf("(%d -> %d) = INF\n",v0,i);
            }
        }
    }
    
    • 1

    信息

    ID
    391
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    21
    已通过
    5
    上传者