| Task: | Laskettelukeskus |
| Sender: | Masemiliano |
| Submission time: | 2023-11-02 17:26:23 +0200 |
| Language: | Python3 (CPython3) |
| Status: | READY |
| Result: | 53 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 53 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.02 s | 1, 2 | details |
| #2 | ACCEPTED | 0.16 s | 1, 2 | details |
| #3 | ACCEPTED | 0.17 s | 1, 2 | details |
| #4 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #5 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #6 | ACCEPTED | 0.02 s | 1, 2 | details |
| #7 | ACCEPTED | 0.33 s | 2 | details |
| #8 | ACCEPTED | 0.03 s | 1, 2 | details |
| #9 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #10 | ACCEPTED | 0.17 s | 1, 2 | details |
| #11 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #12 | ACCEPTED | 0.27 s | 1, 2 | details |
| #13 | TIME LIMIT EXCEEDED | -- | 2 | details |
Code
slopes = int(input())
# slopes = 5
roads = [ [] for _ in range(slopes)]
for n in range(1, slopes):
road = input()
from_, to_ = road.split()
roads[int(from_) - 1].append(int(to_))
"""roaf = ["1 2", "1 3", "3 4", "3 5"]
for road in roaf:
from_, to_ = road.split()
roads[int(from_) - 1].append(int(to_))"""
plowes = [int(g) for g in input().split()]
# plowes = [int(g) for g in "0 2 4 3 1".split()]
def pathfinding():
start = 1
positions_next = []
paths = []
for v in roads[start - 1]:
plus = 0
if plowes[0] > 0:
plus += 1
if plowes[v - 1] > 0:
plus += 1
positions_next.append([plus, 1, v])
while True:
# print(positions_next)
positions_next_new = []
for p in positions_next:
# print(roads[p[-1] - 1])
if roads[p[-1] - 1]:
for p2 in roads[p[-1] - 1]:
new = p.copy()
new.append(p2)
if plowes[p2 - 1] > 0:
new[0] += 1
positions_next_new.append(new)
else:
paths.append(p)
positions_next = positions_next_new.copy()
if not positions_next:
break
big_ass = 0
what = []
for ph in paths:
if ph[0] > big_ass:
what = ph
big_ass = ph[0]
if what:
return what
# print(what)
times = 0
while not (plowes[0] == 0 and len(set(plowes)) <= 1):
taken_path = pathfinding()
taken_path.pop(0)
for t in taken_path:
if plowes[t - 1] > 0:
plowes[t - 1] -= 1
times += 1
print(times)
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: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 1 45452 1 74209 45452 78960 45452 79820 ... |
| correct output |
|---|
| 28399367694319 |
| user output |
|---|
| (empty) |
Test 5
Group: 2
Verdict: TIME LIMIT EXCEEDED
| 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: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 1 2 2 3 3 4 4 5 ... |
| correct output |
|---|
| 1000000000 |
| user output |
|---|
| (empty) |
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: TIME LIMIT EXCEEDED
| 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: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 1 2 1 3 2 4 2 5 ... |
| correct output |
|---|
| 50000000000000 |
| user output |
|---|
| (empty) |
