CSES - Datatähti 2021 alku - Results
Submission details
Task:Ratsun reitit
Sender:Totska
Submission time:2021-08-19 21:37:49 +0300
Language:Python3 (PyPy3)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED27
#2ACCEPTED31
#3ACCEPTED42
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1, 2, 3details
#2ACCEPTED0.05 s1, 2, 3details
#3ACCEPTED0.05 s1, 2, 3details
#4ACCEPTED0.05 s1, 2, 3details
#5ACCEPTED0.05 s1, 2, 3details
#6ACCEPTED0.05 s1, 2, 3details
#7ACCEPTED0.05 s1, 2, 3details
#8ACCEPTED0.07 s2, 3details
#9ACCEPTED0.10 s2, 3details
#10ACCEPTED0.10 s2, 3details
#11ACCEPTED0.13 s3details
#12ACCEPTED0.16 s3details
#13ACCEPTED0.17 s3details

Code

import sys
from collections import deque

sys.setrecursionlimit(10000)

n = int(input())
# n = 49
shortestpath = {}
adjacencydict = {}
discovered = {}

offsets = ((1, 2), (2, 1), (-1, 2), (2, -1), (-1, -2), (-2, -1), (1, -2), (-2, 1))

def getneighbours(node):
    neighbours = set()

    for i in range(8):
        newnode = (node[0]+offsets[i][0], node[1]+offsets[i][1])

        if 0 <= newnode[0] < n and 0 <= newnode[1] < n:
            neighbours.add(newnode)

    return neighbours

for i in range(n):
    for j in range(n):
        shortestpath[(i, j)] = 999999
        adjacencydict[(i, j)] = getneighbours((i, j))
        discovered[(i, j)] = False

start = (0, 0)

# print(adjacencydict)

shortestpath[start] = 0

length = 0

q = deque()



def visit(length):

    if not q:
        return

    node = q.popleft()

    length = shortestpath[node]

    for neighbour in adjacencydict[node]:

        if not discovered[neighbour]:

            discovered[neighbour] = True
            shortestpath[neighbour] = length + 1
            q.append(neighbour)

    visit(length)


def visit2(node, length, seq):
    seq.add(node)
    length += 1
    neighbours = getneighbours(node)
    
    for newnode in neighbours:
        if newnode not in seq:
            if length < shortestpath[newnode]:
                shortestpath[newnode] = length

                visit(newnode, length, seq.copy())
            
#print(getneighbours((2,2)))
seq = set()


q.append(start)
discovered[start] = True
shortestpath[start] = 0

visit(length)
# visit2(start, length, seq)
#print(shortestpath)


for r in range(n):
    row = ""
    for c in range(n):
        row += f"{shortestpath[(r, c)]} "
    
    print(row)

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
4

correct output
0 3 2 5 
3 4 1 2 
2 1 4 3 
5 2 3 2 

user output
0 3 2 5 
3 4 1 2 
2 1 4 3 
5 2 3 2 

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
5

correct output
0 3 2 3 2 
3 4 1 2 3 
2 1 4 3 2 
3 2 3 2 3 
2 3 2 3 4 

user output
0 3 2 3 2 
3 4 1 2 3 
2 1 4 3 2 
3 2 3 2 3 
2 3 2 3 4 

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
6

correct output
0 3 2 3 2 3 
3 4 1 2 3 4 
2 1 4 3 2 3 
3 2 3 2 3 4 
2 3 2 3 4 3 
...

user output
0 3 2 3 2 3 
3 4 1 2 3 4 
2 1 4 3 2 3 
3 2 3 2 3 4 
2 3 2 3 4 3 
...

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
7

correct output
0 3 2 3 2 3 4 
3 4 1 2 3 4 3 
2 1 4 3 2 3 4 
3 2 3 2 3 4 3 
2 3 2 3 4 3 4 
...

user output
0 3 2 3 2 3 4 
3 4 1 2 3 4 3 
2 1 4 3 2 3 4 
3 2 3 2 3 4 3 
2 3 2 3 4 3 4 
...
Truncated

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
8

correct output
0 3 2 3 2 3 4 5 
3 4 1 2 3 4 3 4 
2 1 4 3 2 3 4 5 
3 2 3 2 3 4 3 4 
2 3 2 3 4 3 4 5 
...

user output
0 3 2 3 2 3 4 5 
3 4 1 2 3 4 3 4 
2 1 4 3 2 3 4 5 
3 2 3 2 3 4 3 4 
2 3 2 3 4 3 4 5 
...
Truncated

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
9

correct output
0 3 2 3 2 3 4 5 4 
3 4 1 2 3 4 3 4 5 
2 1 4 3 2 3 4 5 4 
3 2 3 2 3 4 3 4 5 
2 3 2 3 4 3 4 5 4 
...

user output
0 3 2 3 2 3 4 5 4 
3 4 1 2 3 4 3 4 5 
2 1 4 3 2 3 4 5 4 
3 2 3 2 3 4 3 4 5 
2 3 2 3 4 3 4 
...
Truncated

Test 7

Group: 1, 2, 3

Verdict: ACCEPTED

input
10

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

user output
0 3 2 3 2 3 4 5 4 5 
3 4 1 2 3 4 3 4 5 6 
2 1 4 3 2 3 4 5 4 5 
3 2 3 2 3 4 3 4 5 6 
2 3 2 
...
Truncated

Test 8

Group: 2, 3

Verdict: ACCEPTED

input
25

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
49

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated

Test 10

Group: 2, 3

Verdict: ACCEPTED

input
50

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated

Test 11

Group: 3

Verdict: ACCEPTED

input
75

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated

Test 12

Group: 3

Verdict: ACCEPTED

input
99

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated

Test 13

Group: 3

Verdict: ACCEPTED

input
100

correct output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...

user output
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ...
Truncated