QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#518879 | #7034. Honeycomb | wnsyou | AC ✓ | 331ms | 188388kb | C++23 | 1.9kb | 2024-08-14 13:38:44 | 2024-08-14 13:38:44 |
Judging History
answer
#include <bits/stdc++.h>
#define _1 (__int128)1
using namespace std;
using ll = long long;
using pii = pair<int, int>;
void FileIO (const string s) {
freopen(string(s + ".in").c_str(), "r", stdin);
freopen(string(s + ".out").c_str(), "w", stdout);
}
const int N = 4010, M = 6010, C = 1e6 + 10;
int T, n, m, id[N][M], cnt, st, en, dis[C];
string s;
char c[N][M];
vector<int> g[C];
queue<int> q;
void Record (int x, int lv) {
if (dis[x]) return ;
dis[x] = lv, q.push(x);
}
void Solve () {
cin >> n >> m, cin.get(), cnt = 0;
for (int i = 1; i <= 4 * n + 3; i++) {
getline(cin, s);
for (int j = 1; j <= 6 * m + 3; j++)
c[i][j] = (j <= s.size() ? s[j - 1] : ' ');
//for (int j = 1; j <= 6 * m + 3; j++)
// cout << c[i][j];
//cout << '\n';
}
for (int i = 3; i <= 4 * n + 1; i += 2)
for (int j = (i / 2 % 2 ? 5 : 11); j <= 6 * m + 3; j += 12) {
id[i][j] = ++cnt;
if (c[i][j] == 'S') st = cnt;
else if (c[i][j] == 'T') en = cnt;
}
for (int i = 3; i <= 4 * n + 1; i += 2)
for (int j = (i / 2 % 2 ? 5 : 11); j <= 6 * m + 3; j += 12) {
if (c[i - 2][j] == ' ') g[id[i][j]].push_back(id[i - 4][j]), g[id[i - 4][j]].push_back(id[i][j]);
if (c[i - 1][j - 3] == ' ') g[id[i][j]].push_back(id[i - 2][j - 6]), g[id[i - 2][j - 6]].push_back(id[i][j]);
if (c[i + 1][j - 3] == ' ') g[id[i][j]].push_back(id[i + 2][j - 6]), g[id[i + 2][j - 6]].push_back(id[i][j]);
}
Record(st, 2);
//cout << st << ' ' << en << '\n';
while (q.size()) {
int x = q.front();
q.pop();
//cout << x << ' ' << dis[x] << '\n';
for (int i : g[x])
Record(i, dis[x] + 1);
}
cout << dis[en] - 1;
for (int i = 1; i <= cnt; i++)
g[i] = vector<int> (), dis[i] = 0;
}
signed main () {
ios::sync_with_stdio(0), cin.tie(0);
// FileIO("");
for (cin >> T; T--; Solve(), cout << '\n') {}
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 7728kb
input:
1 3 4 +---+ +---+ / \ / \ + +---+ +---+ \ \ / \ + + S +---+ T + / \ / / + +---+ + + \ \ / \ +---+ +---+ + / / + +---+ + + \ ...
output:
7
result:
ok single line: '7'
Test #2:
score: 0
Accepted
time: 198ms
memory: 123500kb
input:
400 67 89 +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ ...
output:
91 132 8 71 57 51 83 151 400 67 9 3 196 597 33 212 49 29 527 20 23 51 280 22 40 91 541 33 488 125 13 357 263 220 47 182 293 254 11 82 97 39 176 15 65 13 65 75 32 9 60 77 152 14 69 110 45 555 191 173 109 207 7 225 232 97 108 326 118 79 78 414 222 44 31 58 47 228 32 48 15 133 521 350 242 85 201 48 105...
result:
ok 400 lines
Test #3:
score: 0
Accepted
time: 331ms
memory: 188388kb
input:
2 1000 1000 +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ ...
output:
825 1889
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 212ms
memory: 20728kb
input:
200 97 97 +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ ...
output:
72 153 63 38 132 33 99 108 96 126 47 124 64 28 156 173 83 30 126 118 102 155 210 214 45 75 115 163 172 91 115 71 76 260 107 71 73 80 61 117 116 68 153 139 95 47 209 119 135 162 180 170 174 69 52 133 110 278 66 41 7 78 53 77 144 132 49 135 215 63 99 41 32 107 285 87 53 191 115 51 286 159 124 173 138 ...
result:
ok 200 lines
Test #5:
score: 0
Accepted
time: 250ms
memory: 30340kb
input:
10000 198 2 +---+ / \ + +---+ \ \ +---+ + / \ / + +---+ \ \ + + + / / + + + \ \ + + + / / + + + \ \ + + + / / + + + \ \ ...
output:
-1 28 33 5 37 -1 24 -1 25 23 74 58 42 71 14 4 35 24 77 25 15 8 3 55 -1 48 70 11 -1 83 25 47 14 57 83 12 -1 14 23 34 12 -1 11 47 -1 18 54 36 6 37 72 -1 13 14 39 89 62 42 47 19 36 14 9 20 35 74 29 88 86 16 9 47 -1 58 11 58 53 73 55 38 46 8 26 26 18 35 6 15 -1 22 20 34 33 27 83 85 39 50 9 57 51 58 9 47...
result:
ok 10000 lines