247362026-02-14 22:03:07999Rácsháló gráfcpp17Time limit exceeded 47/50600ms748 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> v;

int main() {
    int n,m,k;cin>>n>>m>>k;
    v.resize(n*m+2);
    for(int i = 1;i<=n*m;i++){
        if((i-1)%m>0)v[i].push_back(i-1);
        if((i-1)%m<m-1)v[i].push_back(i+1);
        if((i-1)/m>0)v[i].push_back(i-m);
        if((i-1)/m<n-1)v[i].push_back(i+m);
    }
    vector<vector<int>> tav(n*m+2,vector<int>(n*m+2,INT_MAX));
    for(int i = 1;i<=n*m;i++){
        for(int j = 1;j<=n*m;j++){
            tav[i][j]=abs((i-1)%m-(j-1)%m)+abs((i-1)/m-(j-1)/m);
            //cout<<tav[i][j]<<' ';
        }//cout<<endl;
    }
    for(int xyz=0;xyz<k;xyz++){
        int U,V;cin>>U>>V;
        tav[U][V]=tav[V][U]=1;
        for(int K=1;K<=n*m;K++){
            for(int i = 1;i<=n*m;i++){
                for(int j = 1;j<=n*m;j++){
                    tav[i][j]=min(tav[i][j],tav[i][K]+tav[K][j]);
                }
            }
        }
        int mx=0;
        for(int i = 1;i<=n*m;i++){
            for(int j = 1;j<=n*m;j++){
                //cout<<tav[i][j]<<' ';
                mx=max(mx,tav[i][j]);
            }//cout<<endl;
        }
        cout<<mx<<endl;
    }
}
SubtaskSumTestVerdictTimeMemory
base47/50
1Accepted0/01ms316 KiB
2Time limit exceeded0/0583ms748 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/217ms316 KiB
8Accepted2/217ms376 KiB
9Accepted2/217ms316 KiB
10Accepted2/24ms512 KiB
11Accepted2/217ms448 KiB
12Accepted2/2177ms580 KiB
13Accepted3/3223ms316 KiB
14Accepted3/323ms316 KiB
15Accepted3/3216ms316 KiB
16Accepted3/318ms316 KiB
17Accepted3/3163ms316 KiB
18Accepted3/335ms316 KiB
19Accepted3/32ms508 KiB
20Accepted3/32ms500 KiB
21Accepted3/348ms316 KiB
22Time limit exceeded0/3600ms564 KiB