c++,十个TLE(哭),能不能救一下
查看原帖
c++,十个TLE(哭),能不能救一下
1122193
FarmerDrone楼主2024/1/6 20:59
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n, m, a, b, B;
	B = 0;
	cin >> n >> m >> a >> b;
	int mn[n + 2][m + 2];
	for (int i_n = 0; i_n <= n + 1; i_n++)
	{
		for (int i_m = 0; i_m <= m + 1; i_m++)
			mn[i_n][i_m] = 99999;
	}
	int x_a;
	int y_a;
	int x_b[b];
	int x_B[b];
	int y_b[b];
	int y_B[b];
	for (int i = 0; i < a; i++)
	{
		cin >> x_a >> y_a;
		mn[x_a][y_a] = 0;
	}
	for (int i = 0; i < b; i++)
	{
		cin >> x_b[i] >> y_b[i];
		x_B[i] = x_b[i];
		y_B[i] = y_b[i];
	}
	for (int t = 1; ; t++)
	{
		if (B == b)
			break;
		for (int i_n = 1; i_n <= n; i_n++)
		{
			if (B == b)
				break;
			for (int i_m = 1; i_m <= m; i_m++)
			{
				if (mn[i_n][i_m] < t)
					continue;
				if (t - 1 == mn[i_n - 1][i_m] || t - 1 == mn[i_n][i_m - 1] || t - 1 == mn[i_n + 1][i_m] || t - 1 == mn[i_n][i_m + 1])				
				{
					mn[i_n][i_m] = t;
					for (int i = 0; i < b - B; i++)
					{
						if (i_n == x_B[i] && i_m == y_B[i])
						{
							swap(x_B[i], x_B[b - B - 1]);
							swap(y_B[i], y_B[b - B - 1]);
							B++;
						}
					}
				}
			} 
		}
	}
	for (int i = 0; i < b; i++)
		cout << mn[x_b[i]][y_b[i]] << endl;
	return 0;
} 
2024/1/6 20:59
加载中...