Floyd 板子求助
查看原帖
Floyd 板子求助
682394
Moon_Traveller楼主2023/4/30 21:25
#include <iostream>
#include <cstring>
using namespace std;

int n, K;
int link[25][25];
char st, ed;

int main()
{
    cin >> n >> K;
    memset(link, 0x3f, sizeof(link));
    for(int i = 1; i < n; i++)
    {
        int tmp;
        cin >> tmp;
        link[i][i + 1] = tmp;
        link[i + 1][i] = tmp;
    }
    int tmp;
    cin >> tmp;
    link[n][1] = tmp;
    link[1][n] = tmp;
    for(int i = 1; i <= K; i++)
    {
        char a, b;
        int x, y, tmp;
        cin >> a >> b >> tmp;
        x = a - 'A' + 1;
        y = b - 'A' + 1;
        if(tmp > link[x][y] || link[x][y] == 0x3f)
        {
            link[x][y] = tmp;
            link[y][x] = tmp;
        }
    }
    cin >> st >> ed;
    for(int k = 1; k <= n; k++)
    {
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)
            {
                link[i][j] = min(link[i][j], link[i][k] + link[k][j]);
                link[j][i] = link[i][j];
            }
        }
    }
    cout << link[st - 'A' + 1][ed - 'A' + 1] << endl;
    return 0;
}

Floyd 40 pts,看不出哪里错了。

2023/4/30 21:25
加载中...