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)