133522025-01-07 16:57:20GervidRácsháló gráfcpp17Hibás válasz 27/5067ms532 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <limits.h>
#include <algorithm>
#include <math.h>
#include <array>

using namespace std;

int main()
{
	iostream::sync_with_stdio(0);
	cin.tie(0);

	int n, m, k, i;
	cin >> n >> m >> k;

	vector<vector<int>> g(n*m);
	for (i = 0; i < n*m; i++)
	{
		if (i / m == (i - 1) / m && i > 0) g[i].push_back(i - 1);
		if (i / m == (i + 1) / m) g[i].push_back(i + 1);
		if (i - m > 0) g[i].push_back(i - m);
		if (i + m < n*m) g[i].push_back(i + m);
	}

	vector<int> state(n * m, 0);
	int token = 1;

	while (k--)
	{
		int node1, node2;
		cin >> node1 >> node2;
		g[--node1].push_back(--node2);
		g[node2].push_back(node1);

		int maxl = 0;
		for (i = 0; i < n*m; i++)
		{
			queue<array<int, 2>> q;
			q.push({ i, 0 });
			state[i] = ++token;
			while (true)
			{
				for (int neighbour : g[q.front()[0]])
				{
					if (state[neighbour] != token)
					{
						state[neighbour] = token;
						q.push({ neighbour, q.front()[1] + 1 });
					}
				}
				if (q.size() == 1) break;
				q.pop();
			}
			maxl = max(maxl, q.front()[1]);
		}
		cout << maxl << '\n';
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base27/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/067ms316 KiB
3Hibás válasz0/22ms316 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/24ms316 KiB
8Elfogadva2/24ms336 KiB
9Hibás válasz0/24ms316 KiB
10Hibás válasz0/22ms532 KiB
11Elfogadva2/24ms316 KiB
12Hibás válasz0/210ms316 KiB
13Elfogadva3/329ms424 KiB
14Elfogadva3/34ms428 KiB
15Elfogadva3/330ms316 KiB
16Elfogadva3/34ms316 KiB
17Hibás válasz0/327ms336 KiB
18Elfogadva3/39ms508 KiB
19Hibás válasz0/31ms420 KiB
20Hibás válasz0/32ms316 KiB
21Elfogadva3/312ms316 KiB
22Elfogadva3/367ms436 KiB