90pts求条玄关
  • 板块P2009 跑步
  • 楼主封禁用户
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/6/22 19:21
  • 上次更新2025/6/23 19:21:42
查看原帖
90pts求条玄关
1357527
封禁用户楼主2025/6/22 19:21
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int dp[257][257];
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    for(int i='A';i<='Z';i++)
        for(int j='A';j<='Z';j++)
            dp[i][j]=-1;
    cin>>n>>k;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        char u = 'A' + i;
        char v = 'A' + (i+1)%n;
        dp[u][v] = x;
        dp[v][u] = x;
    }
    while(k--){
        char u,v;
        int w;
        cin>>u>>v>>w;
        if(u==v)continue;
        dp[u][v]=max(dp[u][v],w);
        dp[v][u]=max(dp[v][u],w);
    }
    for(int i='A';i<='Z';i++){
        for(int j='A';j<='Z';j++){
            if(dp[i][j]==-1){
                dp[i][j]=1e9;
            }
        }
        dp[i][i]=0;
    }
    for(int k='A';k<='Z';k++){
        for(int i='A';i<='Z';i++){
            for(int j='A';j<='Z';j++){
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
            }
        }
    }
    char b,e;
    cin>>b>>e;
    cout<<dp[b][e];
    return 0;
}
2025/6/22 19:21
加载中...