3 条题解
-
1
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
-
0
数据比较小,暴力求好了。 很显然就是求$min(Σ(de[j]-1)*a[j])$,
为深度 为人口数
#include<bits/stdc++.h> using namespace std; int fa[105]; int n,a[105],u,v,de[105],ans=0x3f3f3f3f,sum; vector<int> e[105]; void dfs(int u,int fal) { for(int i=0;i<e[u].size();i++) { int v=e[u][i]; if(v==fal) { fa[u]=v; continue; } de[v]=de[u]+1; dfs(v,u); } } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]>>u>>v; if(u!=0) { e[i].push_back(u); e[u].push_back(i); } if(v!=0) { e[i].push_back(v); e[v].push_back(i); } } for(int i=1;i<=n;i++) { de[i]=1; dfs(i,0); sum=0; for(int j=1;j<=n;j++) { sum+=(de[j]-1)*a[j]; } ans=min(ans,sum); memset(de,0,sizeof(de)); } cout<<ans; return 0; }
- 1
信息
- ID
- 1185
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 30
- 已通过
- 20
- 上传者