79802024-01-12 09:38:07UnluckYCiklikus rácsháló gráfcpp17Wrong answer 4/4018ms3696 KiB
// Source: https://usaco.guide/general/io

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

int INF = 1e9;

int main() {
	int n, m, kk; cin >> n >> m >> kk;
	vector<vector<int>> d(n*m+1, vector<int>(n*m+1, INF));

	for (int i = 1; i <= n*m; i++){
		d[i][i] = 0;
		if (i % m == 1){ // bal szél
			if (i < m+1){ // teteje
				d[i][i+m] = 1;
				d[i][i + (n-1)*m] = 1;
			}
			else if (i > (n-1)*m){ // alja
				d[i][i-m] = 1;
				d[i][1] = 1;
			} 
			else {
				d[i][i-m] = 1;
				d[i][i+m] = 1;
			}
			d[i][i+1] = 1;
			d[i][i+m-1] = 1;
		}
		else if (i % m == 0){ // jobb szél
			if (i < m+1){ // teteje
				d[i][i+m] = 1;
				d[i][i + (n-1)*m] = 1;
			}
			else if (i > (n-1)*m){ // alja
				d[i][i-m] = 1;
				d[i][m] = 1;
			} 
			else {
				d[i][i-m] = 1;
				d[i][i+m] = 1;
			}
			d[i][i-1] = 1;
			d[i][i-m+1] = 1;
		}
		else if (i < m+1){ // teteje
				d[i][i+1] = 1;
				d[i][i-1] = 1;
				d[i][i+m] = 1;
				d[i][i + (n-1)*m] = 1;
		}
		else if (i > (n-1)*m){ // alja
				d[i][i+1] = 1;
				d[i][i-1] = 1;
				d[i][i-m] = 1;
				d[i][i - (n-1)*m] = 1;
		}
	}

	for (int k = 1; k <= n*m; k++){
		for (int i = 1; i <= n*m; i++){
			for (int j = 1; j <= n*m; j++){
				if (d[i][k] != INF && d[k][j] != INF){
					d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
				}
			}
		}
	}

	for (int _ = 0; _ < kk; _++){
		int ki, kj; cin >> ki >> kj;
		for (int i = 1; i <= n*m; i++){
			for (int j = 1; j <= n*m; j++){
				if (d[i][ki] != INF && d[kj][j] != INF){
					d[i][j] = min(d[i][j], d[i][ki] + d[kj][j] + 1);
					d[i][j] = min(d[i][j], d[i][kj] + d[ki][j] + 1);
				}
			}
		}
		int ans = 0;
		for (int i = 1; i <= n*m; i++){
			for (int j = 1; j <= n*m; j++){
				if (d[i][j] != INF){
					ans = max(ans, d[i][j]);
				}
			}
		}
		cout << ans << endl;
	}


}
SubtaskSumTestVerdictTimeMemory
base4/40
1Accepted0/03ms1816 KiB
2Wrong answer0/018ms2428 KiB
3Accepted2/23ms2380 KiB
4Wrong answer0/23ms2420 KiB
5Wrong answer0/23ms2520 KiB
6Wrong answer0/23ms2572 KiB
7Wrong answer0/24ms2676 KiB
8Wrong answer0/24ms2776 KiB
9Wrong answer0/24ms2944 KiB
10Wrong answer0/23ms2876 KiB
11Wrong answer0/24ms2904 KiB
12Accepted2/218ms3376 KiB
13Wrong answer0/213ms3320 KiB
14Wrong answer0/24ms3300 KiB
15Wrong answer0/29ms3512 KiB
16Wrong answer0/24ms3412 KiB
17Wrong answer0/28ms3388 KiB
18Wrong answer0/24ms3340 KiB
19Wrong answer0/23ms3324 KiB
20Wrong answer0/23ms3484 KiB
21Wrong answer0/24ms3484 KiB
22Wrong answer0/218ms3696 KiB