pat 1106. Lowest Price in Supply Chain (25)

来源:互联网 发布:进口牛奶推荐 知乎 编辑:程序博客网 时间:2024/05/20 23:58

https://www.patest.cn/contests/pat-a-practise/1106


找最近的叶节点, bfs。

#include <cstdio>#include <queue>#include <vector>using namespace std;typedef struct node {int k;vector<int> edges;}Node;int n;double r, price;vector< Node > G;int main() {int k,a;scanf("%d %lf %lf",&n,&price,&r);int count = 0,minRetDeep = n + 1;G.resize(n+1);queue<pair<int, int>> q;for (size_t i = 0; i < n; i++){scanf("%d", &k);G[i].k = k;for (size_t j = 0; j < k; j++){scanf("%d", &a);G[i].edges.push_back(a);}}q.push(pair<int, int>(0, 0));while (!q.empty()) {int node = q.front().first;int deep = q.front().second;q.pop();if (minRetDeep < deep) break;if (G[node].k == 0) {//printf("%d %d\n", node, deep);if (minRetDeep > deep) {minRetDeep = deep;count = 1;}else if (minRetDeep == deep) {count++;}}for (size_t i = 0; i < G[node].k; i++){q.push(pair<int, int>(G[node].edges[i], deep + 1));}}double res = price;for (size_t i = 0; i < minRetDeep; i++){res *= (1+r/100.0);}printf("%.4lf %d\n", res, count);}



0 0
原创粉丝点击