79802024-01-12 09:38:07UnluckYCiklikus rácsháló gráfcpp17Hibás válasz 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;
	}


}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/40
1Elfogadva0/03ms1816 KiB
2Hibás válasz0/018ms2428 KiB
3Elfogadva2/23ms2380 KiB
4Hibás válasz0/23ms2420 KiB
5Hibás válasz0/23ms2520 KiB
6Hibás válasz0/23ms2572 KiB
7Hibás válasz0/24ms2676 KiB
8Hibás válasz0/24ms2776 KiB
9Hibás válasz0/24ms2944 KiB
10Hibás válasz0/23ms2876 KiB
11Hibás válasz0/24ms2904 KiB
12Elfogadva2/218ms3376 KiB
13Hibás válasz0/213ms3320 KiB
14Hibás válasz0/24ms3300 KiB
15Hibás válasz0/29ms3512 KiB
16Hibás válasz0/24ms3412 KiB
17Hibás válasz0/28ms3388 KiB
18Hibás válasz0/24ms3340 KiB
19Hibás válasz0/23ms3324 KiB
20Hibás válasz0/23ms3484 KiB
21Hibás válasz0/24ms3484 KiB
22Hibás válasz0/218ms3696 KiB