6974 2023. 12. 23 13:00:53 MagyarKendeSZLG Rácsháló gráf cpp17 Elfogadva 50/50 129ms 4232 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <climits>
using namespace std;

#define speed cin.tie(0); ios::sync_with_stdio(0)

struct Route {
public:
    int node;
    int length;
    bool operator()(Route a, Route b) {
        return a.length > b.length;
    }
};

vector<vector<int>> neighborS;
vector<int> distanceS;
int N, M, K, m_size;


int dijkstra(int s) {
    for (int i = 1; i <= m_size; i++) {
        distanceS[i] = INT_MAX;
    }

    priority_queue<Route, vector<Route>, Route> pq;

    pq.push({s, 0});
    distanceS[s] = 0;

    while (!pq.empty()) {
        Route next = pq.top();
        pq.pop();

        if (next.length != distanceS[next.node]) continue;

        for (int neighbor : neighborS[next.node]) {

            int dist = distanceS[next.node] + 1;

            if (dist < distanceS[neighbor]) {

                distanceS[neighbor] = dist;
                pq.push({neighbor, dist});
            }
        }
    }

    return *max_element(distanceS.begin() + 1, distanceS.end());
}

int main() {
    speed;

    cin >> N >> M >> K;
    m_size = N * M;

    neighborS.resize(m_size + 1);

    for (int i = 0, p = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            p++;
            if (i) neighborS[p].push_back(p - M);
            if (i < N - 1) neighborS[p].push_back(p + M);
            if (j) neighborS[p].push_back(p - 1);
            if (j < M - 1) neighborS[p].push_back(p + 1);
        }
    }

    distanceS.resize(m_size + 1);

    while (K--) {
        int U, V;
        cin >> U >> V;

        neighborS[U].push_back(V);
        neighborS[V].push_back(U);

        int curr_max = 0;
        for (int i = 1; i <= m_size; i++) {
            curr_max = max(curr_max, dijkstra(i));
        }

        cout << curr_max << '\n';
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 128ms 2076 KiB
3 Elfogadva 2/2 3ms 2240 KiB
4 Elfogadva 2/2 3ms 2316 KiB
5 Elfogadva 2/2 3ms 2448 KiB
6 Elfogadva 2/2 3ms 2664 KiB
7 Elfogadva 2/2 8ms 2876 KiB
8 Elfogadva 2/2 8ms 2960 KiB
9 Elfogadva 2/2 8ms 3180 KiB
10 Elfogadva 2/2 4ms 3260 KiB
11 Elfogadva 2/2 8ms 3176 KiB
12 Elfogadva 2/2 26ms 3184 KiB
13 Elfogadva 3/3 59ms 3312 KiB
14 Elfogadva 3/3 9ms 3396 KiB
15 Elfogadva 3/3 59ms 3392 KiB
16 Elfogadva 3/3 8ms 3520 KiB
17 Elfogadva 3/3 48ms 3608 KiB
18 Elfogadva 3/3 18ms 3692 KiB
19 Elfogadva 3/3 3ms 3960 KiB
20 Elfogadva 3/3 4ms 4032 KiB
21 Elfogadva 3/3 21ms 4036 KiB
22 Elfogadva 3/3 129ms 4232 KiB