如果你Uac 100pts...
查看原帖
如果你Uac 100pts...
1178898
OJ_killer楼主2024/10/3 11:23

其实是求助贴,最后一个到底是什么毒瘤测试点,八发老题解思路全被卡100UAC,心已碎,求指点:

#include <bits/stdc++.h>
using namespace std;
#define int long long

int n, m, x, y, ans = 1 << 30, tmp;
int a[3001][3001];

main () {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j)
			cin >> a[i][j];
	cin >> x >> y;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (i == 1 && j == 1)
				tmp = a[i][j];
			else
				tmp = __gcd(tmp, a[i][j]);
		}
	}
	if (tmp != 1) {
		cout << -1;
		return 0;
	}
	if (a[x][y] == 1) {
		cout << 0;
		return 0;
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (i == x && j == y)
				continue;
			if (abs (x - i) + abs(y - j) >= ans)
				continue;
			if (__gcd(a[i][j], a[x][y]) == 1)
				ans = min (ans, abs (x - i) + abs(y - j));
		}
	}
	cout << ans;
	return 0;
}
2024/10/3 11:23
加载中...