1106. Lowest Price in Supply Chain (25)
用了下DFS,还是不难。。。DFS时候用h记录是在第几层,BFS应该也是可以用的。。。
#include<iostream> #include<string> #include<map> #include<vector> #include<algorithm> #include<queue> #include<set> #include<stack> using namespace std; struct node { double price; vector<int> next; }; int num; double p, r; int *vis = new int[100001]; node *arr = new node[100001]; void dfs(int root, int h) { if (vis[root] == 0) { vis[root] = 1; arr[root].price = p*pow((1 + r/100), h); } for (int i = 0; i < arr[root].next.size(); i++) { dfs(arr[root].next[i], h + 1); } } int main() { cin >> num >> p >> r; for (int i = 0; i < num; i++) { int n; cin >> n; for (int j = 0; j < n; j++) { int temp; cin >> temp; arr[i].next.push_back(temp); } } fill(vis, vis + 100001, 0); dfs(0, 0); double mini = 999999999999999; int count=0; for (int i = 0; i < num; i++) { if (mini > arr[i].price && arr[i].next.size()==0) { mini = arr[i].price; count = 1; } else if (mini == arr[i].price && arr[i].next.size() == 0) { count++; } } printf("%.4f %d", mini, count); system("pause"); }
浙公网安备 33010602011771号