CSES - Datatähti 2025 loppu - Results
Submission details
Task:Suunnistus
Sender:Vludo
Submission time:2025-01-18 15:18:16 +0200
Language:C++ (C++20)
Status:READY
Result:43
Feedback
groupverdictscore
#1ACCEPTED31
#2ACCEPTED12
#30
Test results
testverdicttimegroup
#10.00 s3details
#2ACCEPTED0.02 s1, 2, 3details
#3ACCEPTED0.02 s1, 2, 3details
#4ACCEPTED0.02 s1, 2, 3details
#5ACCEPTED0.01 s1, 2, 3details
#6ACCEPTED0.00 s1, 2, 3details
#7ACCEPTED0.06 s2, 3details
#8ACCEPTED0.07 s2, 3details
#9ACCEPTED0.02 s2, 3details
#100.10 s3details
#110.10 s3details
#12ACCEPTED0.02 s3details
#130.07 s3details
#14ACCEPTED0.05 s2, 3details
#150.01 s3details
#160.00 s3details
#17ACCEPTED0.03 s2, 3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:79:9: warning: unused variable 'summa' [-Wunused-variable]
   79 |     int summa = 0;
      |         ^~~~~

Code

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
#define F first 
#define S second
#define N 505

int n, m, k;
char arr[N][N];
int vis[N][N];
vector<pair<pii, int>> v;
int kohteet[11];

void bfs(char kohde, int visiit) {
    queue<pair<pii, int>> q;
    for (auto i : v) {
        q.push(i);
    }
    v.clear();
    while (!q.empty()) {
        // if (v.size()==kohteet[kohde-'0']) break; 
        auto[paikka, x] = q.front();
        q.pop();

        // cout << kohde << ' ' << paikka.F << ' ' << paikka.S << endl;

        if (paikka.F>0 && vis[paikka.F-1][paikka.S]!=visiit) {
            vis[paikka.F-1][paikka.S] = visiit;
            char ch = arr[paikka.F-1][paikka.S];
            if (ch==kohde) {
                v.push_back({{paikka.F-1,paikka.S},x+1});
                // if (kohde == '0'+k+1) return;
            }
            if (ch!='#') q.push({{paikka.F-1,paikka.S}, x+1});
        }
        if (paikka.F<n-1 && vis[paikka.F+1][paikka.S]!=visiit) {
            vis[paikka.F+1][paikka.S] = visiit;
            char ch = arr[paikka.F+1][paikka.S];
            if (ch==kohde) {
                v.push_back({{paikka.F+1,paikka.S},x+1});
                // if (kohde == '0'+k+1) return;
            }
            if (ch!='#') q.push({{paikka.F+1,paikka.S}, x+1});
        }
        if (paikka.S>0 && vis[paikka.F][paikka.S-1]!=visiit) {
            vis[paikka.F][paikka.S-1] = visiit;
            char ch = arr[paikka.F][paikka.S-1];
            if (ch==kohde) {
                v.push_back({{paikka.F,paikka.S-1},x+1});
                // if (kohde == '0'+k+1) return;
            }
            if (ch!='#') q.push({{paikka.F,paikka.S-1}, x+1});
        }
        if (paikka.S<m-1 && vis[paikka.F][paikka.S+1]!=visiit) {
            vis[paikka.F][paikka.S+1] = visiit;
            char ch = arr[paikka.F][paikka.S+1];
            if (ch==kohde) {
                v.push_back({{paikka.F,paikka.S+1},x+1});
                // if (kohde == '0'+k+1) return;
            }
            if (ch!='#') q.push({{paikka.F,paikka.S+1}, x+1});
        }
    }
}

int main() {
    cin >> n >> m >> k;
    pii start;
    for (int i=0;i<n;++i) {
        for (int j=0;j<m;++j) {
            cin >> arr[i][j];
            if (arr[i][j]>='0' && arr[i][j]<='9') 
                kohteet[arr[i][j]-'0']++;
            else if (arr[i][j]=='E') arr[i][j] = '0'+k+1;
            else if (arr[i][j]=='S') start = {i,j};
        }
    }
    kohteet[k+1] = 1;
    int summa = 0;
    v.push_back({start, 0});
    int visI = 1;
    bfs('1', visI++);
    // for (auto i : v) cout << "{ " << i.F.F << " " << i.F.S << ": " << i.S << " }, "; 
    // cout << endl;
    for (int kohde=2;kohde<=k+1;++kohde) {
        if (v.empty()) return 0*printf("-1\n");
        bfs('0'+kohde, visI++);
        // for (auto i : v) cout << "{ " << i.F.F << " " << i.F.S << ": " << i.S << " }, "; 
        // cout << endl;
    }

    if (v.empty()) return 0*printf("-1\n");
    for (auto i : v) cout << i.S << ' ';
    cout << endl; 
}

Test details

Test 1

Group: 3

Verdict:

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

correct output
25

user output
29 

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:

input
500 500 9
623475428948841896621266296765...

correct output
205

user output
221 

Test 11

Group: 3

Verdict:

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

correct output
157

user output
165 

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
1755 

Test 14

Group: 2, 3

Verdict: ACCEPTED

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

correct output
1124942

user output
1124942 

Test 15

Group: 3

Verdict:

input
500 1 9
1
6
1
3
...

correct output
332

user output
378 

Test 16

Group: 3

Verdict:

input
1 500 9
996327784392827829434482995353...

correct output
135

user output
177 

Test 17

Group: 2, 3

Verdict: ACCEPTED

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

correct output
-1

user output
-1