1 条题解

  • 0
    @ 2024-12-11 21:46:42

    floyd

    #include<bits/stdc++.h>
    using namespace std;
    int len[1000][1000];
    int num[100000];
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                len[i][j]=1e9;
        int l,r;
        for(int i=1;i<=n;i++){
            len[i][i]=0;
            cin>>num[i]>>l>>r;
            if(l>0) len[i][l]=len[l][i]=1;
            if(r>0) len[i][r]=len[r][i]=1;
        }
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                if(i!=k){
                    for(int j=1;j<=n;j++)
                        if(i!=j&&k!=j&&len[i][k]+len[k][j]<len[i][j])
                            len[i][j]=len[i][k]+len[k][j];
                }
        int Min=INT_MAX;
        for(int i=1;i<=n;i++){
            int s=0;
            for(int j=1;j<=n;j++)
                s+=len[i][j]*num[j];
            if(s<Min) Min=s;
        }
        cout<<Min;
        return 0;
    }
    

    信息

    ID
    5422
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    20
    已通过
    9
    上传者