140722025-01-09 18:16:58gergomiszoriRácsháló gráfcpp17Elfogadva 50/5057ms520 KiB
#include <bits/stdc++.h>

using namespace std;

int bfs(vector<vector<int>> &g, int k) {
    queue<int> q; q.push(k);
    vector<int> dis(g.size(), 0);
    dis[k] = 1;
    int ans = 1;
    while (!q.empty()) {
        int p = q.front(); q.pop();
        for (int p2 : g[p]) {
            if (!dis[p2]) {
                q.push(p2);
                dis[p2] = dis[p]+1;
                ans = max(ans, dis[p2]);
            }
        }
    }
    return (ans-1);
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, m, k; cin >> n >> m >> k;
    vector<vector<int>> g(n*m+1);
    for (int i = 0; i < n; i++) for (int j = 1; j <= m; j++) {
        if (i != 0) g[i * m + j].push_back((i-1) * m + j);
        if (i != n-1) g[i * m + j].push_back((i+1) * m + j);
        if (j != 1) g[i * m + j].push_back(i * m + (j-1));
        if (j != m) g[i * m + j].push_back(i * m + (j+1));
    }

    while (k--) {
        int a, b; cin >> a >> b;
        g[a].push_back(b); g[b].push_back(a);
        int ans = 0;
        for (int i = 1; i <= n*m; i++)
            ans = max(ans, bfs(g, i));
        cout << ans << '\n';
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/056ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms396 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/23ms316 KiB
8Elfogadva2/23ms384 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/22ms500 KiB
11Elfogadva2/23ms316 KiB
12Elfogadva2/28ms508 KiB
13Elfogadva3/325ms420 KiB
14Elfogadva3/34ms316 KiB
15Elfogadva3/327ms500 KiB
16Elfogadva3/33ms316 KiB
17Elfogadva3/323ms428 KiB
18Elfogadva3/38ms424 KiB
19Elfogadva3/31ms316 KiB
20Elfogadva3/32ms508 KiB
21Elfogadva3/39ms500 KiB
22Elfogadva3/357ms520 KiB