QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#32690#2617. Browsing the CollectionSorting#TL 732ms22400kbC++203.2kb2022-05-22 23:29:322022-05-22 23:29:32

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-05-22 23:29:32]
  • 评测
  • 测评结果:TL
  • 用时:732ms
  • 内存:22400kb
  • [2022-05-22 23:29:32]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

const int N = 500 + 3;
const int M = 5 + 3;
const int T = 32 + 3;
const int STATES = 500 * 32 + 3;

int n, m;
int ans[N][N], a[N][M];

template<class T>
void check_min(T &a, T b){ a = (a < b) ? a : b; }

vector<int> adj[STATES];

bool check(int i, int state, int j){
    for(int k = 0; k < 5; ++k){
        if(state >> k & 1){
            if(a[i][k] != a[j][k])
                return false;
        }
    }
    return true;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> m;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j){
            cin >> a[i][j];
            --a[i][j];
        }

    for(int i = 0; i < n; ++i){
        for(int state = 0; state < 32; ++state){
            for(int j = 0; j < m; ++j){
                if((state & (1 << j)))
                adj[i * 32 + state].push_back(i * 32 + (state ^ (1 << j)));
            }
            
            static bool vis[T][N];
            for(int j = 0; j < m; ++j)
                fill(vis[j], vis[j] + n, false);

            for(int j = 0; j < m; ++j){
                if(!(state >> j & 1)){
                    vis[j][a[i][j]] = true;
                    adj[i * 32 + state].push_back(i * 32 + (state ^ (1 << j)));
                }
            }

            for(int j = (i + 1) % n; j != i; j = (j + 1) % n){
                for(int k = 0; k < m; ++k){
                    if(!((state >> k) & 1) && !vis[k][a[j][k]]){
                        vis[k][a[j][k]] = true;
                        adj[i * 32 + state].push_back(j * 32 + (state ^ (1 << k)));
                    }
                }
            }

            for(int j = (i + 1) % n; j != i; j = (j + 1) % n){
                if(check(i, state, j)){
                    adj[i * 32 + state].push_back(j * 32 + state);
                    break;
                }
            }
            for(int j = (i - 1 + n) % n; j != i; j = (j - 1 + n) % n){
                if(check(i, state, j)){
                    adj[i * 32 + state].push_back(j * 32 + state);
                    break;
                }
            }
        }
    }

    const int INF = 1e9;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
            ans[i][j] = INF;

    for(int i = 0; i < n; ++i){
        static int d[STATES];

        for(int j = 0; j < STATES; ++j)
            d[j] = INF;

        queue<int> q;
        for(int j = 0; j < 1; ++j){
            q.push(i * 32 + j);
            d[i * 32 + j] = 0;
        }

        int cnt = 0;
        while(!q.empty()){
            int u = q.front();
            q.pop();

            if(ans[i][u / 32] == INF){
                ++cnt;
                ans[i][u / 32] = d[u];
            }
            if(cnt == n)
                break;

            for(int to: adj[u]){
                int cand = d[u] + 1;
                if(d[to] > cand){
                    d[to] = cand;
                    q.push(to);
                }
            }
        }
    }

    for(int i = 0; i < n; ++i){
        for(int j = 0; j < n; ++j)
            cout << ans[i][j] << " ";
        cout << "\n";
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 4124kb

input:

9 3
5 3 7
5 3 4
5 3 7
5 3 2
5 3 4
5 3 7
2 3 7
5 3 7
2 3 7

output:

0 1 2 1 2 3 1 2 1 
1 0 1 1 2 2 1 3 2 
2 1 0 1 1 2 1 3 2 
3 2 1 0 1 1 1 3 2 
3 2 2 1 0 1 1 3 2 
3 1 2 1 1 0 1 2 2 
2 1 3 1 2 1 0 1 2 
2 1 3 1 2 2 1 0 1 
1 1 3 1 2 3 2 1 0 

result:

ok 81 numbers

Test #2:

score: 0
Accepted
time: 3ms
memory: 3956kb

input:

2 2
2 2
1 1

output:

0 1 
1 0 

result:

ok 4 number(s): "0 1 1 0"

Test #3:

score: 0
Accepted
time: 3ms
memory: 4004kb

input:

2 5
2 1 1 2 1
1 2 1 2 1

output:

0 1 
1 0 

result:

ok 4 number(s): "0 1 1 0"

Test #4:

score: 0
Accepted
time: 3ms
memory: 4008kb

input:

4 1
4
2
3
2

output:

0 1 1 1 
1 0 1 2 
1 1 0 1 
1 2 1 0 

result:

ok 16 numbers

Test #5:

score: 0
Accepted
time: 0ms
memory: 3972kb

input:

4 5
2 3 4 4 1
3 1 3 4 2
3 1 2 4 4
2 4 3 3 4

output:

0 1 1 1 
1 0 1 1 
1 1 0 1 
1 1 1 0 

result:

ok 16 numbers

Test #6:

score: 0
Accepted
time: 3ms
memory: 3972kb

input:

4 5
2 3 1 4 2
3 2 4 4 4
4 4 4 3 1
3 3 3 1 3

output:

0 1 1 1 
1 0 1 1 
1 1 0 1 
1 1 1 0 

result:

ok 16 numbers

Test #7:

score: 0
Accepted
time: 0ms
memory: 4092kb

input:

8 5
7 8 3 1 5
3 3 8 4 5
5 1 5 8 5
2 7 4 6 7
6 4 3 5 5
5 3 7 6 2
2 4 2 8 6
5 5 4 4 2

output:

0 1 1 1 1 1 1 1 
1 0 1 1 1 1 1 1 
1 1 0 1 1 1 1 1 
1 1 1 0 1 1 1 1 
1 1 1 1 0 1 1 1 
1 1 1 1 1 0 1 1 
1 1 1 1 1 1 0 1 
1 1 1 1 1 1 1 0 

result:

ok 64 numbers

Test #8:

score: 0
Accepted
time: 3ms
memory: 4116kb

input:

16 2
12 15
4 6
16 10
13 3
2 7
2 13
4 1
14 16
14 6
7 11
7 1
13 11
15 7
10 6
4 13
4 13

output:

0 1 1 1 1 1 1 1 2 1 2 2 1 1 2 1 
1 0 1 1 1 1 1 1 2 1 2 2 1 1 2 2 
1 1 0 1 1 1 1 1 1 1 2 2 1 1 2 2 
1 2 1 0 1 1 1 1 1 1 2 2 1 1 2 2 
1 2 1 1 0 1 1 1 1 1 2 1 1 1 2 2 
1 2 1 1 1 0 1 1 1 1 2 1 1 1 2 2 
1 2 1 1 1 1 0 1 1 1 2 1 1 1 1 2 
1 2 1 1 1 2 1 0 1 1 1 1 1 1 1 2 
1 2 1 1 1 2 2 1 0 1 1 1 1 1 1 2 
1 2...

result:

ok 256 numbers

Test #9:

score: 0
Accepted
time: 3ms
memory: 4176kb

input:

16 5
14 3 2 6 11
9 1 4 3 12
16 14 10 1 5
9 4 13 10 16
3 3 13 11 14
10 2 5 7 15
8 7 3 10 16
1 2 7 7 13
11 6 10 3 3
11 5 15 2 9
16 7 14 12 8
1 13 10 2 9
5 11 13 4 3
5 12 8 16 1
15 1 5 11 13
3 11 15 16 16

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 
1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 2 
1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 2 
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 
1 1...

result:

ok 256 numbers

Test #10:

score: 0
Accepted
time: 4ms
memory: 4300kb

input:

26 3
3 16 24
12 6 26
3 6 19
25 11 12
5 22 26
17 1 20
16 11 11
11 23 12
7 17 10
12 9 8
22 19 25
21 17 21
3 25 20
16 4 2
25 25 17
23 8 12
24 4 12
24 14 12
16 6 18
19 10 1
16 6 14
16 26 12
11 6 24
25 7 6
16 1 23
4 2 14

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 2 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 2 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 2 1 0 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok 676 numbers

Test #11:

score: 0
Accepted
time: 4ms
memory: 4484kb

input:

32 5
4 30 20 26 8
29 18 22 5 14
20 22 31 31 28
12 22 27 12 4
13 7 14 32 16
6 29 20 21 25
22 21 21 20 24
4 14 18 4 28
4 9 9 29 11
11 5 11 20 30
19 27 21 6 7
3 11 2 2 12
24 17 18 30 29
13 8 20 28 26
9 17 2 21 3
32 23 31 11 23
16 28 20 2 5
30 30 11 29 6
15 21 30 17 32
15 18 13 19 25
24 17 26 18 4
23 21...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 1024 numbers

Test #12:

score: 0
Accepted
time: 4ms
memory: 4328kb

input:

34 2
26 17
32 10
13 8
14 11
17 30
9 32
31 28
20 23
5 25
34 2
32 22
6 7
8 32
17 11
7 5
33 10
6 19
24 5
28 20
27 8
3 25
20 26
3 6
26 25
30 8
23 19
23 27
12 13
13 17
18 34
8 11
8 24
25 22
24 21

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 2 1 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 
2 1 0 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 
2 2 1 0 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 
2 2 2 1 0 1 1 1 1 1 1 1 ...

result:

ok 1156 numbers

Test #13:

score: 0
Accepted
time: 11ms
memory: 5452kb

input:

64 5
4 16 39 57 15
38 19 6 30 35
24 21 29 50 34
7 18 44 10 24
48 8 51 46 48
38 7 7 6 13
5 29 14 6 44
42 57 49 22 38
53 24 29 42 46
37 34 54 44 55
18 59 38 55 13
46 61 61 53 35
30 54 47 25 51
15 13 47 63 48
34 12 30 3 37
22 43 47 3 61
39 6 62 41 26
30 26 2 14 48
1 3 9 43 44
47 40 53 18 31
19 26 41 42...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 4096 numbers

Test #14:

score: 0
Accepted
time: 20ms
memory: 5908kb

input:

100 3
75 52 18
93 63 78
21 36 95
39 3 64
79 91 97
39 30 41
3 86 24
97 70 70
98 95 12
93 29 51
4 84 49
48 36 5
34 89 86
6 83 21
8 89 14
64 87 57
86 72 69
72 86 56
5 32 54
9 66 12
99 86 14
11 60 56
96 4 71
59 32 46
32 74 98
89 16 37
61 44 76
55 32 1
41 41 63
39 59 73
84 7 87
56 64 81
44 94 41
72 73 12...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok 10000 numbers

Test #15:

score: 0
Accepted
time: 101ms
memory: 9640kb

input:

128 5
122 18 15 41 30
78 109 50 118 101
34 110 71 93 99
98 30 54 126 13
91 99 108 58 97
27 38 75 54 33
47 82 25 25 82
97 23 73 58 117
50 90 92 71 121
39 121 111 73 94
53 8 119 89 80
51 6 40 86 8
90 93 80 35 40
55 30 29 9 114
78 104 61 22 87
83 55 41 55 31
31 66 24 15 8
28 79 38 6 29
57 95 124 104 3
...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok 16384 numbers

Test #16:

score: 0
Accepted
time: 334ms
memory: 18436kb

input:

244 4
190 106 2 214
40 220 21 86
217 147 210 137
244 130 202 68
201 166 70 154
101 148 71 180
137 46 182 62
217 209 81 163
6 101 58 110
234 67 139 212
127 34 147 193
192 235 235 135
17 185 124 132
159 153 13 222
173 224 12 138
236 15 118 33
147 84 224 137
17 114 149 69
53 45 207 24
179 41 202 155
67...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 59536 numbers

Test #17:

score: 0
Accepted
time: 732ms
memory: 22400kb

input:

256 5
197 131 211 151 128
133 74 92 247 210
81 173 69 34 33
213 153 59 17 54
95 193 174 114 210
10 154 196 59 95
107 101 91 211 149
74 68 84 179 120
191 54 173 3 33
26 218 211 90 69
229 236 137 153 183
250 75 60 18 42
157 249 173 55 142
216 29 111 254 106
76 192 2 108 124
105 33 12 55 64
182 84 91 9...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 65536 numbers

Test #18:

score: 0
Accepted
time: 288ms
memory: 20276kb

input:

297 3
294 106 225
285 214 198
37 160 58
130 53 190
195 103 224
202 234 19
241 105 214
227 289 93
253 79 146
292 48 163
168 116 55
47 8 244
215 240 285
74 200 70
156 114 276
59 157 134
85 84 272
289 91 283
263 108 244
291 22 172
208 102 239
182 13 114
84 9 220
55 83 297
164 199 11
124 2 87
65 43 269
...

output:

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 ...

result:

ok 88209 numbers

Test #19:

score: -100
Time Limit Exceeded

input:

500 5
476 371 300 184 275
302 264 130 67 432
301 54 107 319 223
268 93 476 39 401
166 401 342 165 479
270 277 148 65 306
176 20 212 476 476
56 308 41 224 62
115 421 231 477 331
147 323 442 19 407
285 388 417 158 99
388 440 293 453 75
222 64 139 49 7
54 85 304 142 171
487 276 14 274 106
11 271 203 32...

output:


result: