21022022-12-19 17:21:40lacitoCiklikus rácsháló gráfcpp11Elfogadva 40/4090ms4212 KiB
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> szom;

int szelessegi(int m) {
	vector<int> tav(szom.size());
	vector<bool> volt(szom.size());
	queue<int> q;
	int max = 0;
	q.push(m);
	volt[m] = true;
	tav[m] = 0;
	while (!q.empty()) {
		int n = q.front();
		q.pop();
		for (int i = 0; i < szom[n].size(); i++) {
			if (!volt[szom[n][i]]) {
				q.push(szom[n][i]);
				volt[szom[n][i]] = 1;
				tav[szom[n][i]] = tav[n] + 1;
				if (tav[szom[n][i] > max]) {
					max = tav[szom[n][i]];
				}
			}
		}
	}
	return max;
}

int main() {
	int n, m, k;
	cin >> n >> m >> k;
	szom.resize(n*m+1);
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			int x = i*m+j+1;
			if (i < n - 1) {
				szom[x].push_back(x+m);
				szom[x+m].push_back(x);
			} else {
				szom[x].push_back(j+1);
				szom[j+1].push_back(x);
			}
			if (j < m - 1) {
				szom[x].push_back(x+1);
				szom[x+1].push_back(x);
			} else {
				szom[x].push_back(x-m+1);
				szom[x-m+1].push_back(x);
			}
		}
	}
	for (int i = 0; i < k; i++) {
		int maxi = 0;
		int a, b;
		cin >> a >> b;
		szom[a].push_back(b);
		szom[b].push_back(a);
		for (int j = 0; j < n*m; j++) {
			int y = szelessegi(j+1);
			if (y > maxi) {
				maxi = y;
			}
		}
		cout << maxi << endl;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/03ms1812 KiB
2Elfogadva0/090ms2072 KiB
3Elfogadva2/22ms2132 KiB
4Elfogadva2/22ms2204 KiB
5Elfogadva2/23ms2460 KiB
6Elfogadva2/23ms2660 KiB
7Elfogadva2/26ms2744 KiB
8Elfogadva2/26ms2872 KiB
9Elfogadva2/26ms2948 KiB
10Elfogadva2/24ms3180 KiB
11Elfogadva2/26ms3280 KiB
12Elfogadva2/219ms3392 KiB
13Elfogadva2/241ms3384 KiB
14Elfogadva2/28ms3456 KiB
15Elfogadva2/241ms3544 KiB
16Elfogadva2/26ms3644 KiB
17Elfogadva2/235ms3724 KiB
18Elfogadva2/214ms3856 KiB
19Elfogadva2/23ms3928 KiB
20Elfogadva2/23ms4212 KiB
21Elfogadva2/217ms4100 KiB
22Elfogadva2/290ms4168 KiB