Submission #2123965


Source Code Expand

#include <iostream>
#include <vector>
#include <utility>
#define llint long long

using namespace std;
typedef pair<llint, llint> P;

llint N;
llint s[100005];
vector<P> G[100005];
llint ans[100005];
llint centi, centa, centb;

llint dfs(int v, int prev)
{
	llint ret = 0, res, d1, d2;
	for(int i = 0; i < G[v].size(); i++){
		if(G[v][i].first == prev) continue;
		res = dfs(G[v][i].first, v);
		ret += res;
		if(N % 2 == 0 && res == N/2){
			centi = G[v][i].second;
			centa = v;
			centb = G[v][i].first;
			continue;
		}
		ans[G[v][i].second] = (s[v] - s[G[v][i].first]) / (2*res - N);
	}
	return ret + 1;
}

P dfs2(int v, int prev)
{
	P ret = make_pair(0, 0), res;
	for(int i = 0; i < G[v].size(); i++){
		if(G[v][i].first == prev) continue;
		res = dfs2(G[v][i].first, v);
		ret.first += res.first + res.second * ans[G[v][i].second];
		ret.second += res.second;
	}
	ret.second++; 
	return ret;
}

int main(void)
{
	cin >> N;
	int a, b;
	for(int i = 1; i <= N-1; i++){
		cin >> a >> b;
		G[a].push_back(make_pair(b, i));
		G[b].push_back(make_pair(a, i));
	}
	for(int i = 1; i <= N; i++) cin >> s[i];
	
	dfs(1, -1);
	if(centi != 0){
		llint s1 = dfs2(centa, centb).first;
		llint s2 = dfs2(centb, centa).first;
		ans[centi] = (s[centa] - (s1+s2)) / (N / 2);
	}
	
	for(int i = 1; i <= N-1; i++){
		cout << ans[i] << endl;
	}
	return 0;
}

Submission Info

Submission Time
Task D - Ancient Tree Record
User leaf1415
Language C++14 (GCC 5.4.1)
Score 800
Code Size 1407 Byte
Status AC
Exec Time 339 ms
Memory 17280 KB

Judge Result

Set Name Sample Subtask1 Subtask2 All
Score / Max Score 0 / 0 300 / 300 200 / 200 300 / 300
Status
AC × 3
AC × 14
AC × 11
AC × 48
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
Subtask1 00_example_01.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt
Subtask2 00_example_02.txt, s2_14.txt, s2_15.txt, s2_16.txt, s2_17.txt, s2_18.txt, s2_19.txt, s2_20.txt, s2_21.txt, s2_22.txt, s2_23.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt, s2_14.txt, s2_15.txt, s2_16.txt, s2_17.txt, s2_18.txt, s2_19.txt, s2_20.txt, s2_21.txt, s2_22.txt, s2_23.txt, s3_24.txt, s3_25.txt, s3_26.txt, s3_27.txt, s3_28.txt, s3_29.txt, s3_30.txt, s3_31.txt, s3_32.txt, s3_33.txt, s3_34.txt, s3_35.txt, s3_36.txt, s3_37.txt, s3_38.txt, s3_39.txt, s3_40.txt, s3_41.txt, s3_42.txt, s3_43.txt, s3_44.txt, s3_45.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 2 ms 2560 KB
00_example_02.txt AC 2 ms 2560 KB
00_example_03.txt AC 2 ms 2560 KB
s1_01.txt AC 173 ms 10880 KB
s1_02.txt AC 244 ms 14208 KB
s1_03.txt AC 12 ms 3072 KB
s1_04.txt AC 204 ms 12288 KB
s1_05.txt AC 33 ms 4096 KB
s1_06.txt AC 304 ms 17280 KB
s1_07.txt AC 306 ms 17280 KB
s1_08.txt AC 304 ms 17280 KB
s1_09.txt AC 2 ms 2560 KB
s1_10.txt AC 2 ms 2560 KB
s1_11.txt AC 2 ms 2560 KB
s1_12.txt AC 2 ms 2560 KB
s1_13.txt AC 2 ms 2560 KB
s2_14.txt AC 158 ms 6516 KB
s2_15.txt AC 224 ms 8176 KB
s2_16.txt AC 280 ms 9584 KB
s2_17.txt AC 278 ms 9584 KB
s2_18.txt AC 285 ms 9584 KB
s2_19.txt AC 282 ms 9584 KB
s2_20.txt AC 2 ms 2560 KB
s2_21.txt AC 2 ms 2560 KB
s2_22.txt AC 2 ms 2560 KB
s2_23.txt AC 2 ms 2560 KB
s3_24.txt AC 170 ms 6784 KB
s3_25.txt AC 244 ms 8320 KB
s3_26.txt AC 12 ms 2816 KB
s3_27.txt AC 203 ms 7424 KB
s3_28.txt AC 32 ms 3328 KB
s3_29.txt AC 311 ms 9856 KB
s3_30.txt AC 310 ms 9984 KB
s3_31.txt AC 317 ms 9856 KB
s3_32.txt AC 323 ms 13696 KB
s3_33.txt AC 339 ms 16128 KB
s3_34.txt AC 300 ms 9584 KB
s3_35.txt AC 300 ms 9584 KB
s3_36.txt AC 2 ms 2560 KB
s3_37.txt AC 2 ms 2560 KB
s3_38.txt AC 2 ms 2560 KB
s3_39.txt AC 2 ms 2560 KB
s3_40.txt AC 172 ms 6784 KB
s3_41.txt AC 252 ms 8320 KB
s3_42.txt AC 12 ms 2816 KB
s3_43.txt AC 315 ms 9856 KB
s3_44.txt AC 310 ms 9984 KB
s3_45.txt AC 319 ms 9856 KB