1 条题解
-
0
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; }
- 1
信息
- ID
- 5422
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 20
- 已通过
- 9
- 上传者