L2-020 功夫传人 (25分)
2020-11-24 20:46
92 查看
分析: ⽤⼆维数 组v存储师⻔谱系关系,v[i]表示编号为i的师傅所拥有的徒弟,如果徒弟个数等于0,
也就是说这是个得道者,那么v[i][0]保存放⼤的倍数,⽽且⽤visit[i] = true标记当前的这个编号的⼈是
得道者~⽤深度
优先搜索,每当遇到visit[index] = true也就是说这是个得道者的时候,就累加放⼤后的功⼒,power
* v[index][0],累加到result中~遍历v[index]的所有弟⼦,并将功⼒减弱r%,也就是power * (1 –
r/100),最后输出的是result的整数值(int)result ~~~
// Author : RioTian // Time : 20/11/24 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; vector<vector<int>> v; int visit , n, k; double result, z, r; void dfs(int index, double power) { if (visit[index]) { result += power * v[index][0]; return; } for (int i = 0; i < v[index].size(); ++i) { dfs(v[index][i], power * (1 - r / 100)); } } int main() { // freopen("in.txt", "r", stdin); ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> n >> z >> r; v.resize(n); for (int i = 0; i < n; ++i) { cin >> k; int tmp; if (k == 0) { cin >> tmp; v[i].push_back(tmp); visit[i] = true; } else { for (int j = 0; j < k; ++j) { cin >> tmp; v[i].push_back(tmp); } } } dfs(0, z); cout << (int)result << endl; }
相关文章推荐
- L2-020 功夫传人 (25分)
- L2-020. 功夫传人 CCCC-DFS
- (vector二维数组或者直接用数组)L2-020. 功夫传人
- L2-020. 功夫传人 CCCC-DFS
- L2-020. 功夫传人
- L2-020. 功夫传人
- L2-020. 功夫传人
- L2-020 功夫传人 (DFS)(25 分)
- L2-020. 功夫传人
- L2-020. 功夫传人 CCCC-DFS
- PAT--L2-020. 功夫传人
- L2-020. 功夫传人 BFS
- L2-020. 功夫传人
- L2-020. 功夫传人
- CCCC题集 L2-020. 功夫传人( 搜索
- L2-1 功夫传人 (25分)
- L2-020. 功夫传人(2017初赛)
- L2-020. 功夫传人 CCCC-DFS
- L2-020. 功夫传人
- L2-020 功夫传人 (25 分)