CSES - Datatähti 2025 loppu - Results
Submission details
Task:Suunnistus
Sender:Verlet
Submission time:2025-01-19 10:41:25 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED31
#2ACCEPTED12
#3ACCEPTED57
Test results
testverdicttimegroup
#1ACCEPTED0.00 s3details
#2ACCEPTED0.04 s1, 2, 3details
#3ACCEPTED0.03 s1, 2, 3details
#4ACCEPTED0.02 s1, 2, 3details
#5ACCEPTED0.00 s1, 2, 3details
#6ACCEPTED0.01 s1, 2, 3details
#7ACCEPTED0.15 s2, 3details
#8ACCEPTED0.17 s2, 3details
#9ACCEPTED0.02 s2, 3details
#10ACCEPTED0.04 s3details
#11ACCEPTED0.05 s3details
#12ACCEPTED0.02 s3details
#13ACCEPTED0.17 s3details
#14ACCEPTED0.09 s2, 3details
#15ACCEPTED0.00 s3details
#16ACCEPTED0.01 s3details
#17ACCEPTED0.04 s2, 3details

Code

#include <bits/stdc++.h>

#define N 502

#define F first
#define S second

#define pb push_back

using namespace std;

typedef pair<int, int> ip;

struct Move
{
  ip p;
  int d;
  int t;
};

char m[N][N];
char v[N][N][10];

int bfs(Move start, vector<char> targets)
{
  queue<Move> q;

  q.push(start);

  while (q.size())
  {
    Move n = q.front(); q.pop();

    int t = n.t;
    int d = n.d;
    int x = n.p.F;
    int y = n.p.S;

    if (v[x][y][t] || m[x][y] == '#') continue;

    v[x][y][t] = true;

    if (m[x][y] == targets[t])
    {
      if (targets[t] == targets.back()) return d;
      
      q.push({{x, y}, d, t+1});

      continue;
    }

    q.push({{x+1, y}, d+1, t});
    q.push({{x-1, y}, d+1, t});
    q.push({{x, y+1}, d+1, t});
    q.push({{x, y-1}, d+1, t});
  }

  return -1;
}

int main()
{
  int w, h, k; cin >> h >> w >> k;

  for (int y = 0; y < N; y++)
  for (int x = 0; x < N; x++)
  {
    m[x][y] = '#';
  }

  ip start;

  // cout << "Width: " << w << endl;
  // cout << "Height: " << h << endl;

  for (int y = 1; y <= h; y++)
  for (int x = 1; x <= w; x++)
  {
    char c; cin >> c;

    if (c != '#') m[x][y] = c;

    if (c == 'S') start = {x, y};
  }

  // cout << "Start: " << s.F << " " << s.S << endl;
  // cout << "End: " << e.F << " " << e.S << endl;

  // for (int y = 0; y <= h + 1; y++)
  // {
  //   for (int x = 0; x <= w + 1; x++)
  //   {
  //     cout << m[x][y] << " ";
  //   }
  //   cout << endl;
  // }

  vector<char> targets;

  for (char c = '1'; c < '1' + k; c++)
    targets.pb(c);
  
  targets.pb('E');

  cout << bfs({start, 0, 0}, targets) << endl;
}

Test details

Test 1

Group: 3

Verdict: ACCEPTED

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

correct output
25

user output
25

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: ACCEPTED

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

correct output
3447

user output
3447

Test 8

Group: 2, 3

Verdict: ACCEPTED

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

correct output
4952

user output
4952

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: ACCEPTED

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

correct output
1313

user output
1313

Test 14

Group: 2, 3

Verdict: ACCEPTED

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

correct output
1124942

user output
1124942

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: ACCEPTED

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

correct output
-1

user output
-1