CSES - Datatähti 2025 loppu - Results
Submission details
Task:Suunnistus
Sender:PMak
Submission time:2025-01-18 14:16:44 +0200
Language:C++ (C++17)
Status:READY
Result:31
Feedback
groupverdictscore
#1ACCEPTED31
#20
#30
Test results
testverdicttimegroup
#10.01 s3details
#2ACCEPTED0.02 s1, 2, 3details
#3ACCEPTED0.02 s1, 2, 3details
#4ACCEPTED0.02 s1, 2, 3details
#5ACCEPTED0.01 s1, 2, 3details
#6ACCEPTED0.01 s1, 2, 3details
#70.02 s2, 3details
#80.02 s2, 3details
#9ACCEPTED0.02 s2, 3details
#10ACCEPTED0.02 s3details
#11ACCEPTED0.02 s3details
#12ACCEPTED0.03 s3details
#130.03 s3details
#140.02 s2, 3details
#15ACCEPTED0.01 s3details
#16ACCEPTED0.01 s3details
#170.02 s2, 3details

Code

#include<bits/stdc++.h>
#define FOR(i, n) for (i = 0; i < n; ++i)
#define pii pair<int, int>
using namespace std;

const int N = 501;
const int mx = 1000000000;
int grid[N][N]; // -1 = obstacle, 0 = start, path, 10 = end, 1-9: controls
int dis[N][N];
int vis[N][N];
int n, m, k;
int dif[][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

int bfs(pii st) {
    queue<pair<pii, int>> q;
    q.push({st, 0});

    int a, b, i, j, d, x; pii p;
    while (!q.empty())  {
        tie(p, d) = q.front();
        tie(a, b) = p;
        q.pop();

        FOR (x, 4) {
            i = a+dif[x][0]; j = b+dif[x][1];
            if (i < 0 || i >= n) continue;
            if (j < 0 || j >= m) continue;
            if (vis[i][j]) continue;
            vis[i][j] = true;
            if (grid[i][j] == -1) continue;

            if (grid[i][j] == 10) {
                return d+1;
            }
            q.push({{i, j}, d+1});
        }
    }
    return -1;
}

int main() {
    memset(grid, -1, sizeof(grid));
    memset(vis, 0, sizeof(vis));

    int i, j;
    cin >> n >> m >> k;

    char ch;
    pii start = {0, 0};
    FOR (i, n) {
        FOR (j, m) {
            cin >> ch;
            dis[i][j] = mx;
            if (ch == '#') grid[i][j] = -1;
            else if (ch == '.') grid[i][j] = 0;
            else if (ch == 'S') {
                grid[i][j] = 0;
                start = {i, j};
                dis[i][j] = 0;
            }
            else if (ch == 'E') grid[i][j] = 10;
            else grid[i][j] = int(ch-'0');
        }
    }

    int length = bfs(start);
    cout << length;
}

Test details

Test 1

Group: 3

Verdict:

input
10 10 9
S293#35616
#662963731
54975451#7
5162589168
...

correct output
25

user output
15

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
.................................

correct output
301

user output
301

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
.#.........#.#..##..#............

correct output
253

user output
253

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
...#......##.##.#.#..##..#..##...

correct output
-1

user output
-1

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 1 0
.
.
.
.
...

correct output
77

user output
77

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
1 500 0
.................................

correct output
166

user output
166

Test 7

Group: 2, 3

Verdict:

input
500 500 9
.................................

correct output
3447

user output
249

Test 8

Group: 2, 3

Verdict:

input
500 500 9
.#........#..................#...

correct output
4952

user output
234

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
500 500 9
##.########.##########.#..#......

correct output
-1

user output
-1

Test 10

Group: 3

Verdict: ACCEPTED

input
500 500 9
623475428948841896621266296765...

correct output
205

user output
205

Test 11

Group: 3

Verdict: ACCEPTED

input
500 500 9
7##814125813#3463#272134469457...

correct output
157

user output
157

Test 12

Group: 3

Verdict: ACCEPTED

input
500 500 9
##67##36##5#3###67###8972#61##...

correct output
-1

user output
-1

Test 13

Group: 3

Verdict:

input
500 500 9
....................#...#........

correct output
1313

user output
539

Test 14

Group: 2, 3

Verdict:

input
499 499 9
S#...#...#...#...#...#...#...#...

correct output
1124942

user output
124998

Test 15

Group: 3

Verdict: ACCEPTED

input
500 1 9
1
6
1
3
...

correct output
332

user output
332

Test 16

Group: 3

Verdict: ACCEPTED

input
1 500 9
996327784392827829434482995353...

correct output
135

user output
135

Test 17

Group: 2, 3

Verdict:

input
500 500 9
.................................

correct output
-1

user output
453