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");
    
}

 

posted on 2017-07-31 09:38  wsggb123  阅读(90)  评论(0)    收藏  举报

导航