137342025-01-08 15:37:21tomi7Rácsháló gráfcpp17Accepted 50/5075ms508 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n, m, k;cin>>n>>m>>k;
    vector<vector<int>> a(n*m);
    for(int i=0;i<n*m;i++){
        if((i+1)%m!=0){
            a[i].push_back(i+1);
        }
        if((i+1)%m!=1){
            a[i].push_back(i-1);
        }
        if(i/m<n-1){
            a[i].push_back(i+m);
        }
        if(i/m!=0){
            a[i].push_back(i-m);
        }
    }
    for(int j=0;j<k;j++){
        int x, y;cin>>x>>y;
        vector<int> vegans(n*m);
        x--;y--;
        a[x].push_back(y);
        a[y].push_back(x);
        for(int i=0;i<n*m;i++){
            queue<int> q;
            vector<bool> visited(n*m, false);
            vector<int> ans(n*m, 0);
            visited[i]=true;
            q.push(i);
            while(!q.empty()){
                int x=q.front();
                q.pop();
                for(int y: a[x]){
                    if(!visited[y]){
                        ans[y]=ans[x]+1;
                        q.push(y);
                        visited[y]=true;
                    }
                }
            }
            for(int fgh=0;fgh<n*m;fgh++){
                vegans[fgh]=max(vegans[fgh], ans[fgh]);
            }
        }
        int maxi=0;
        for(int i=0;i<n*m;i++){
            maxi=max(maxi, vegans[i]);
        }
        cout<<maxi<<'\n';
    }
}


/*
3 4 4
1 6
7 10
2 12
4 9
*/
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/075ms316 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/24ms316 KiB
8Accepted2/24ms316 KiB
9Accepted2/24ms364 KiB
10Accepted2/22ms316 KiB
11Accepted2/24ms316 KiB
12Accepted2/214ms316 KiB
13Accepted3/332ms508 KiB
14Accepted3/34ms316 KiB
15Accepted3/335ms316 KiB
16Accepted3/34ms316 KiB
17Accepted3/329ms416 KiB
18Accepted3/312ms316 KiB
19Accepted3/31ms316 KiB
20Accepted3/32ms316 KiB
21Accepted3/314ms508 KiB
22Accepted3/375ms316 KiB