QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#558316#9251. Graph ChangingzltWA 0ms3792kbC++141.8kb2024-09-11 15:28:322024-09-11 15:28:32

Judging History

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

  • [2024-09-11 15:28:32]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3792kb
  • [2024-09-11 15:28:32]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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'