CSES - Datatähti 2024 alku - Results
Submission details
Task:Laskettelukeskus
Sender:YourUncle
Submission time:2023-11-04 19:17:08 +0200
Language:Python3 (CPython3)
Status:READY
Result:53
Feedback
groupverdictscore
#1ACCEPTED53
#20
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2details
#2ACCEPTED0.02 s1, 2details
#3ACCEPTED0.02 s1, 2details
#4--2details
#5--2details
#6ACCEPTED0.02 s1, 2details
#7ACCEPTED0.85 s2details
#8ACCEPTED0.02 s1, 2details
#9ACCEPTED0.57 s2details
#10ACCEPTED0.02 s1, 2details
#11--2details
#12ACCEPTED0.02 s1, 2details
#13--2details

Code

class Tree:
def __init__(self, value=None, children=None):
self.value = value
self.children = []
if children is not None:
self.child(children)
def child(self, children):
for i in children:
self.children.append(i)
def __str__(self):
return "...".join([str(i.value) for i in self.children])
def go_deep_loop(self, root, nodes):
visited = {key:False for key in nodes}
Q = []
Q.append(root)
visited[root] = True
summa = 0
temp = 0
while Q != []:
v = Q.pop(0)
for w in v.children:
if visited[w] != True:
temp += w.value
Q.append(w)
# visited[w]=True
if temp>v.value:
v.value = temp
Q.append(v)
temp = 0
# if v.children == []:
# temp = v.value
return root.value
# return summa
# def temp(self, node):
# summa = 0
# if root.children == []:
# return node.value
# if root.children != []:
# temp = 0
# for i in node.children:
# temp += i.value
# if temp >
# while True:
# for i in root.children:
# summa += temp(i)
def go_deep(self, root):
if root.children == []:
# print("leaf", root.value)
return root.value
if root.children != []:
summa = 0
for i in root.children:
summa += self.go_deep(i)
if summa < root.value:
return root.value
return summa
# def stupid():
# amount = int(input())
# rinteet = {key:[] for key in range(1, amount+1)}
# for i in range(amount-1):
# edge = input().split()
# rinteet[int(edge[0])].append(edge[1])
# leafs = [i[0] for i in rinteet.items() if i[1]==[]]
# values = input().split()
# summa = 0
# for i in leafs:
# summa+=int(values[i-1])
# # print(leafs)
# print(summa)
# stupid()
amount = int(input())
rinteet = [Tree() for x in range(amount)]
for i in range(amount-1):
edge = input().split()
rinteet[int(edge[0])-1].child([rinteet[int(edge[1])-1]])
values = input().split()
# print(values)
for i, v in enumerate(values):
rinteet[i].value = int(v)
# for i in rinteet:
# print(i.value, i)
# amount = 10
# values = [0, 2, 4, 3, 1, 3, 1, 5, 3, 4]
# edges = [(1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7), (4, 8), (6, 9), (6, 10)]
# rinteet = [Tree(value) for value in values]
# for edge in edges:
# rinteet[int(edge[0])-1].child([rinteet[int(edge[1])-1]])
print(rinteet[0].go_deep_loop(rinteet[0], rinteet))
# t = Tree(0)
# t.child([Tree(2), Tree(4, [Tree(3, [Tree(3), Tree(4)]), Tree(1)])])
# print(t.children)
# print(t.go_deep(t))

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
5
1 2
1 3
3 4
3 5
...

correct output
6

user output
6

Test 2

Group: 1, 2

Verdict: ACCEPTED

input
100
1 73
1 64
64 23
1 88
...

correct output
2675

user output
2675

Test 3

Group: 1, 2

Verdict: ACCEPTED

input
100
1 36
36 56
56 59
36 97
...

correct output
2808

user output
2808

Test 4

Group: 2

Verdict:

input
100000
1 45452
1 74209
45452 78960
45452 79820
...

correct output
28399367694319

user output
(empty)

Test 5

Group: 2

Verdict:

input
100000
1 31165
1 23263
31165 89516
31165 53122
...

correct output
28546840313799

user output
(empty)

Test 6

Group: 1, 2

Verdict: ACCEPTED

input
100
1 79
79 9
79 45
45 10
...

correct output
0

user output
0

Test 7

Group: 2

Verdict: ACCEPTED

input
100000
1 66038
1 56789
56789 7403
66038 69542
...

correct output
0

user output
0

Test 8

Group: 1, 2

Verdict: ACCEPTED

input
100
1 2
2 3
3 4
4 5
...

correct output
100

user output
100

Test 9

Group: 2

Verdict: ACCEPTED

input
100000
1 2
2 3
3 4
4 5
...

correct output
1000000000

user output
1000000000

Test 10

Group: 1, 2

Verdict: ACCEPTED

input
100
1 2
1 3
2 4
2 5
...

correct output
2809

user output
2809

Test 11

Group: 2

Verdict:

input
100000
1 2
1 3
2 4
2 5
...

correct output
26053917212428

user output
(empty)

Test 12

Group: 1, 2

Verdict: ACCEPTED

input
100
1 2
1 3
2 4
2 5
...

correct output
5000

user output
5000

Test 13

Group: 2

Verdict:

input
100000
1 2
1 3
2 4
2 5
...

correct output
50000000000000

user output
(empty)