老师布置的原创题,样例对,但只对一个
  • 板块学术版
  • 楼主ZSYhaouuan
  • 当前回复12
  • 已保存回复12
  • 发布时间2024/8/9 17:09
  • 上次更新2024/8/9 18:15:04
查看原帖
老师布置的原创题,样例对,但只对一个
1385996
ZSYhaouuan楼主2024/8/9 17:09

原题:

【题目描述】 巨硬公司是微软公司的竞争对手,今年为了鼓励员工们的积极性决定发放 次奖金,奖金的发放是以部门领导为单位, 巨硬公司的体系为一个领导和若干的该领导的下属,而其下属也可以是其他员工的领导。 巨硬公司的董事会决定,每次选定一个编号为 的领导(已知巨硬公司最大领导的编号为 1 ),给领导及其全部下属发 放奖金。 问经过 次发放后,每个员工(包含领导)最终能够获得多少万的奖励。 【输入格式】 第一行两个数 和 ,意义如题。 接下来 行每行两个正整数 和 ,表示 是 上级 。 再接下来 行每行两个正整数 和 ,表示给编号为 的员工及其全部下属每人发放 万的奖金。 【输出格式】 输出 个数据,以空格隔开,代表的是从编号 至 的员工获得奖金的总数。 输入样例:

4 3

1 2

2 3

2 4

2 10

1 100

3 1

输出样例:

100 110 111 110

代码:

#include<bits/stdc++.h>
using namespace std;
int G[10000005];
long long vis[88808888]; 
int main(){
	long long n,q;
	cin>>n>>q;
	for(long long i=1;i<n;i++){
		int a,b;
		cin>>a>>b;
		G[b]=a;
	}
	for(int i=1;i<=q;i++){ 
		long long x,k;
		cin>>x>>k;
		vis[x]+=k;
	}
	for(int i=1;i<=n;i++){
		vis[i]=vis[i]+vis[G[i]];
		cout<<vis[i]<<" ";
	}
	return 0;
}
2024/8/9 17:09
加载中...