CSES - NOI 2024 - Results
Submission details
Task:Anime Shops
Sender:Rasmus Brene Jepsen
Submission time:2024-03-06 18:33:40 +0200
Language:C++20
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.01 s1, 3details
#20.01 s1, 3details
#30.01 s1, 3details
#40.01 s1, 3details
#50.27 s3details
#60.42 s3details
#70.46 s3details
#80.40 s3details
#90.12 s2, 3details
#100.13 s2, 3details
#110.25 s2, 3details
#120.13 s3details
#130.14 s3details
#140.16 s3details
#150.11 s3details
#160.14 s3details

Compiler report

input/code.cpp: In function 'void BFS(ll, ll, std::vector<std::vector<long long int> >&, std::vector<long long int>&, std::vector<long long int>&, std::vector<bool>)':
input/code.cpp:36:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for (int i = 0; i < adj[k].size(); i++) {
      |                         ~~^~~~~~~~~~~~~~~

Code

#include <iostream>
#include <vector>
#include <queue>
#include <tuple>
 
typedef long long ll;
 
void BFS(ll s, ll n, std::vector<std::vector<ll>>& adj, std::vector<ll>& vis, std::vector<ll>& dis, std::vector<bool> isShop) {
    std::queue<std::pair<ll, ll>> q;
    q.push(std::make_pair(0, s));
 
    while (!q.empty()) {
        std::pair<ll, ll> kunde = q.front();
        q.pop();
        ll k = kunde.second;
        ll d = kunde.first;

        std::cout << k+1 << " " << d << "\n";
 
        if (k != s && (d < dis[k] || dis[k] == -1)) {
            dis[k] = d;
        }
        else if (k != s) {
            continue;
        }

        if (isShop[k] && k != s) {
            continue;
        }
 
        if (vis[k] == s) {
            continue;
        }
        vis[k] = s;
 
        for (int i = 0; i < adj[k].size(); i++) {
            if (vis[adj[k][i]] == s) {
                continue;
            }
            q.push(std::make_pair(d+1, adj[k][i]));
        }
    }
}
 
int main() {
    ll n, m, k;
    std::cin >> n >> m >> k;
    std::vector<ll> shops;
    std::vector<bool> isShop(n, false);
 
    for (int i = 0; i < k; i++) {
        ll inp;
        std::cin >> inp;
        inp--;
        shops.push_back(inp);
        isShop[inp] = true;
    }
 
    std::vector<std::vector<ll>> adj(n);
 
    for (int i = 0; i < m; i++) {
        ll inp1, inp2;
        std::cin >> inp1 >> inp2;
        inp1--;
        inp2--;
        adj[inp1].push_back(inp2);
        adj[inp2].push_back(inp1);
    }
    std::cout << "\n";
    
    std::vector<ll> vis(n, -1);
    std::vector<ll> dis(n, -1);
 
    for (int i = 0; i < k; i++) {
        BFS(shops[i], n, adj, vis, dis, isShop);
    }
 
    for (int i = 0; i < n; i++) {
        std::cout << dis[i] << " ";
    }
}

/*
10 7 4
2 4 5 7
1 2
1 3
1 8
2 4
3 10
5 6
4 10
*/

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

816 0
847 1
935 1
896 1
...
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

578 0
862 1
625 1
158 2
...
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

945 0
566 1
968 1
622 1
...
Truncated

Test 4

Group: 1, 3

Verdict:

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

150 0
182 1
154 1
88 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

77222 0
67771 1
57774 1
80017 1
...
Truncated

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

70440 0
78706 1
49585 1
83622 2
...
Truncated

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

68738 0
74460 1
29665 1
82595 1
...
Truncated

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

47137 0
90414 1
25043 1
94859 1
...
Truncated

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

44158 0
44157 1
44159 1
44156 2
...
Truncated

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

44158 0
44157 1
44159 1
44156 2
...
Truncated

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

44158 0
44157 1
44159 1
25720 0
...
Truncated

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

99998 0
99995 1
99992 2
99989 3
...
Truncated

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

99701 0
99401 1
99101 2
98801 3
...
Truncated

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

70001 0
40001 1
10001 2
1 3
...
Truncated

Test 15

Group: 3

Verdict:

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 0
2 0
3 0
4 0
...
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

1 0
2 1
100000 1
3 2
...
Truncated