2 条题解

  • 0
    @ 2025-1-19 9:19:48
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    int w[N],g[N][N],n;
     
    int main()
    {
        cin>>n;
        memset(g,0x3f,sizeof(g));
        for(int i=1;i<=n;i++)
        {
            int l,r;
            cin>>w[i]>>l>>r;
            if(l) g[l][i]=g[i][l]=1;
            if(r) g[r][i]=g[i][r]=1;
        }
         
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    g[i][j]=min(g[i][j],g[k][i]+g[j][k]);
             
        int ans=INT_MAX;
        for(int i=1;i<=n;i++)
        {
            int sum=0;
            for(int j=1;j<=n;j++)
                if(i!=j) sum+=w[j]*g[i][j];
            ans=min(ans,sum);
        }
        cout<<ans;
        return 0;
    }
    

    信息

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