2 条题解

  • 0
    @ 2025-2-3 12:47:37
    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct number {
    	int higher;//上级
    	int salary;//工资
    	vector<int> lower;//下级数组
    };//boss或员工结构体
    
    vector<number> numbers(65536);//boss和员工数量上限为65536
    
    int pay(number tzy,vector<number>& numbers) {//pay函数计算需要上交给上级的工资	
    	if (tzy.higher != -100) {
    		for (int i = 0; i < tzy.lower.size(); i++) {
    			tzy.salary += pay(numbers[tzy.lower[i]], numbers);
    		}
    		return tzy.salary / 100 * 15;
    	}
    	else return 0;
    }
    
    int main() {
    	int n;
    	cin >> n;//输入员工数量
    	numbers[0] = { -1, 0 , {} };//初始化boss
    	for (int i = 1; i < 65536; i++) {
    		numbers[i] = { -100, -100, {} };
    	}//初始化员工(-100表示没有上级)
    	while (n--) {
    		int id, higher, salary;
    		cin >> id >> higher >> salary;
    		numbers[id] = { higher, salary, {} };
    		numbers[higher].lower.push_back(id);
    	}//输入员工信息,并建立上下级关系
    	int bosssalary = 0;
    	for (int i = 0; i < numbers[0].lower.size(); i++) {
    		bosssalary += pay(numbers[numbers[0].lower[i]], numbers);
    	}//计算boss的工资
    	cout << "0 " << bosssalary << endl;
    	return 0;
    }
    
    
    

    信息

    ID
    54
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    282
    已通过
    63
    上传者