比赛 动规 评测结果 AAAAA
题目名称 医院设置 最终得分 100
用户昵称 FFF团 运行时间 0.003 s
代码语言 C++ 内存使用 0.36 MiB
提交时间 2017-06-22 18:38:05
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,x,y,temp,ans=0x7fffffff;
  4. int dp[105][105];
  5. int num[105];
  6. int main(){
  7. freopen("hospital.in","r",stdin);
  8. freopen("hospital.out","w",stdout);
  9. scanf("%d",&n);
  10. for(int i=1;i<=n;i++)
  11. for(int j=1;j<=n;j++)
  12. dp[i][j]=100000;
  13. for(int i=1;i<=n;i++){
  14. scanf("%d%d%d",&num[i],&x,&y);
  15. if(x){
  16. dp[i][x]=1;
  17. dp[x][i]=1;
  18. }
  19. if(y){
  20. dp[i][y]=1;
  21. dp[y][i]=1;
  22. }
  23. dp[i][i]=0;
  24. }
  25. for(int k=1;k<=n;k++)
  26. for(int i=1;i<=n;i++)
  27. for(int j=1;j<=n;j++)
  28. dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
  29. for(int i=1;i<=n;i++){
  30. temp=0;
  31. for(int j=1;j<=n;j++){
  32. temp+=dp[i][j]*num[j];
  33. }
  34. ans=min(temp,ans);
  35. }
  36. printf("%d\n",ans);
  37. return 0;
  38. }