CSES - NOI 2024 - Results
Submission details
Task:Anime Shops
Sender:Emil Sandberg
Submission time:2024-03-06 16:45:37 +0200
Language:CPython3
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.03 s1, 3details
#20.03 s1, 3details
#30.03 s1, 3details
#4ACCEPTED0.03 s1, 3details
#50.82 s3details
#60.82 s3details
#70.82 s3details
#80.84 s3details
#90.41 s2, 3details
#100.40 s2, 3details
#110.44 s2, 3details
#120.41 s3details
#13--3details
#14--3details
#15ACCEPTED0.63 s3details
#160.41 s3details

Code

n, m, k = list(map(int, input().split()))
shop = [0]*n
for j in list(map(int, input().split())):
    shop[j-1] = 1
graph = [[] for i in range(n)]
for i in range(m):
    a, b = list(map(int, input().split()))
    a -=1
    b -= 1
    graph[a].append(b)
    graph[b].append(a)

visit = [0]*n
parent = [-1]*n
children = [[] for i in range(n)]
def root(x):
    if visit[x]:
        return
    visit[x] = 1
    for i in graph[x]:
        if not visit[i]:
            parent[i] = x
            children[x].append(i)
            root(i)
    return
for i in range(n):
    root(i)

memunder = [((-1, -1), (-1, -1)) for i in range(n)]
visitunder = [0]*n

def under(x):
    if  visitunder[x]:
        return memunder[x]
    visitunder[x] = 1
    l = [(10000000, -1), (10000000, -1)]
    if shop[x]:
        l[0] = (-1 , x)
    for i in children[x]:
        l = sorted(l + list(under(i)))[:2]
    l[0] = (l[0][0]+1, l[0][1])
    l[1] = (l[1][0]+1, l[1][1])
    memunder[x] = tuple(l)
    return memunder[x] 

memclosest = [((-1,-1), (-1, -1)) for i in range(n)]
visitclosest = [0]*n
def closest(x):
    if x == -1:
        return ((10000000, -1), (10000000, -1))
    if visitclosest[x]:
        return memclosest[x]
    visitclosest[x] = 1

    ret = list(closest(parent[x]) + under(x))
    ret[0] = (ret[0][0] +1, ret[0][1])
    ret[1] = (ret[1][0] +1, ret[1][1])
    ret.sort()
    while  len(ret) > 1 and ret[1][1] == ret [0][1]:
        del ret[1]
    memclosest[x] = tuple(ret[:2])
    return memclosest[x]

for i in range(n):
    if closest(i)[0][1] == i:
        
        if closest(i)[1][0] > n:
            print(-1, end = " ")
        else:
            print(closest(i)[1][0], end = " ")
    else:
        
        if closest(i)[0][0] > n:
            print(-1, end = " ")
        else:
            print(closest(i)[0][0], end = " ")
    
    

    
    

 

Test details

Test 1

Group: 1, 3

Verdict:

input
1000 2000 1
816
1 868
976 995
377 536
...

correct output
4 3 3 4 6 4 -1 4 5 2 2 5 5 3 5...

user output
184 14 160 139 124 5 -1 38 332...
Truncated

Test 2

Group: 1, 3

Verdict:

input
1000 2000 20
578 955 222 813 494 962 753 71...

correct output
5 6 4 3 4 2 -1 3 3 3 4 3 2 3 -...

user output
97 17 5 7 11 4 -1 15 15 14 7 5...
Truncated

Test 3

Group: 1, 3

Verdict:

input
1000 2000 100
945 230 119 680 975 520 490 28...

correct output
2 2 3 -1 2 -1 3 2 2 1 2 -1 3 2...

user output
18 2 3 -1 5 -1 3 7 3 2 3 -1 8 ...
Truncated

Test 4

Group: 1, 3

Verdict: ACCEPTED

input
1000 2000 1000
150 443 960 545 218 487 896 38...

correct output
1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 ...

user output
1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 ...
Truncated

Test 5

Group: 3

Verdict:

input
100000 200000 1
77222
59470 61811
43092 48939
14395 19964
...

correct output
8 10 8 8 8 8 8 8 9 7 7 8 8 8 6...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 6

Group: 3

Verdict:

input
100000 200000 20
70440 82302 64483 96767 51485 ...

correct output
-1 8 6 5 5 7 6 7 6 6 8 5 6 4 5...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 7

Group: 3

Verdict:

input
100000 200000 100
68738 37820 55519 77758 46482 ...

correct output
4 5 5 5 5 4 6 -1 5 4 5 6 4 5 5...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 8

Group: 3

Verdict:

input
100000 200000 100000
47137 80137 73347 78145 9205 6...

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 9

Group: 2, 3

Verdict:

input
100000 99999 1
44158
1 2
2 3
3 4
...

correct output
44157 44156 44155 44154 44153 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 10

Group: 2, 3

Verdict:

input
100000 99999 20
44158 25720 84658 90057 99607 ...

correct output
361 360 359 358 357 356 355 35...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 11

Group: 2, 3

Verdict:

input
100000 99999 100000
44158 25720 84658 90057 99607 ...

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 12

Group: 3

Verdict:

input
100000 99999 3
99998 99999 100000
1 2
1 3
1 4
...

correct output
33333 33332 33332 33332 33331 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...

Test 13

Group: 3

Verdict:

input
100000 99999 300
99701 99702 99703 99704 99705 ...

correct output
333 333 333 333 333 333 333 33...

user output
(empty)

Test 14

Group: 3

Verdict:

input
100000 99999 30000
70001 70002 70003 70004 70005 ...

correct output
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...

user output
(empty)

Test 15

Group: 3

Verdict: ACCEPTED

input
100000 0 100000
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...

user output
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
Truncated

Test 16

Group: 3

Verdict:

input
100000 100000 2
1 50001
1 2
2 3
3 4
...

correct output
50000 1 2 3 4 5 6 7 8 9 10 11 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "/box/input/code.py", line 27, in <module>
    r...