QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#558316 | #9251. Graph Changing | zlt | WA | 0ms | 3792kb | C++14 | 1.8kb | 2024-09-11 15:28:32 | 2024-09-11 15:28:32 |
Judging History
answer
#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;
int f[9][9], g[9][9], n, m, K, S, T;
inline void brute() {
for (int _ = 0; _ <= K; ++_) {
mems(g, 0);
if (_) {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
if (f[i][j] >= m) {
g[i][j] = 1;
}
}
}
} else {
for (int i = 1; i < n; ++i) {
g[i][i + 1] = g[i + 1][i] = 1;
}
}
mems(f, -1);
queue<int> q;
for (int s = 1; s <= n; ++s) {
q.push(s);
f[s][s] = 0;
while (q.size()) {
int u = q.front();
q.pop();
for (int i = 1; i <= n; ++i) {
if (f[s][i] == -1 && g[u][i]) {
f[s][i] = f[s][u] + 1;
q.push(i);
}
}
}
}
}
printf("%d\n", f[S][T]);
}
void solve() {
scanf("%d%d%d%d%d", &K, &n, &m, &S, &T);
if (!K) {
printf("%d\n", abs(S - T));
return;
}
if (m >= n) {
puts("-1");
return;
}
if (m == 1) {
puts("1");
return;
}
if (K == 1) {
if (max(S - 1, n - S) < m || max(T - 1, n - T) < m) {
puts("-1");
return;
}
if (abs(S - T) >= m) {
puts("1");
return;
}
if (min(S - 1, T - 1) >= m || min(n - S, n - T) >= m) {
puts("2");
return;
}
puts("3");
return;
}
if (m == 3 && K <= 3 && n <= 7) {
brute();
return;
}
if (m >= 3 && K >= 2) {
puts("-1");
return;
}
assert(m == 2);
if (K & 1) {
puts(abs(S - T) >= 2 ? "1" : "2");
} else {
printf("%d\n", abs(S - T));
}
}
int main() {
int T = 1;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3672kb
input:
5 1 5 3 2 4 1 10 4 2 4 2 10 5 2 4 1 3 2 1 3 1 3 2 1 2
output:
3 2 -1 1 -1
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3672kb
input:
30 1 2 1 1 2 1 2 2 1 2 1 2 3 1 2 1 2 4 1 2 1 2 5 1 2 1 2 6 1 2 2 2 1 1 2 2 2 2 1 2 2 2 3 1 2 2 2 4 1 2 2 2 5 1 2 2 2 6 1 2 3 2 1 1 2 3 2 2 1 2 3 2 3 1 2 3 2 4 1 2 3 2 5 1 2 3 2 6 1 2 4 2 1 1 2 4 2 2 1 2 4 2 3 1 2 4 2 4 1 2 4 2 5 1 2 4 2 6 1 2 5 2 1 1 2 5 2 2 1 2 5 2 3 1 2 5 2 4 1 2 5 2 5 1 2 5 2 6 1 2
output:
1 -1 -1 -1 -1 -1 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 30 lines
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 3792kb
input:
90 1 3 1 1 2 1 3 1 1 3 1 3 1 2 3 1 3 2 1 2 1 3 2 1 3 1 3 2 2 3 1 3 3 1 2 1 3 3 1 3 1 3 3 2 3 1 3 4 1 2 1 3 4 1 3 1 3 4 2 3 1 3 5 1 2 1 3 5 1 3 1 3 5 2 3 1 3 6 1 2 1 3 6 1 3 1 3 6 2 3 2 3 1 1 2 2 3 1 1 3 2 3 1 2 3 2 3 2 1 2 2 3 2 1 3 2 3 2 2 3 2 3 3 1 2 2 3 3 1 3 2 3 3 2 3 2 3 4 1 2 2 3 4 1 3 2 3 4 2...
output:
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 2 1 2 -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 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
result:
wrong answer 22nd lines differ - expected: '-1', found: '1'