254252026-02-20 00:58:35999Ciklikus rácsháló gráfcpp17Hibás válasz 6/4014ms736 KiB
// Source: https://usaco.guide/general/io

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

signed main() {
    int n,m,K;cin>>n>>m>>K;
    vector<vector<int>> v(n*m+2,vector<int>(n*m+2,1e12));
    for(int i = 1;i<=n*m;i++){
        v[i][i]=0;
        if(i%m!=1)v[i][i-1]=1;
        else v[i][i-1+m]=1;
        if(i%m!=0)v[i][i+1]=1;
        else v[i][i+1-m]=1;
        if(i>m)v[i][i-m]=1;
        else v[i][i+(n-1)*m]=1;
        if(i<=(n-1)*m)v[i][i+m]=1;
        else v[i][i-(n-1)*m]=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++){
                v[i][j]=min(v[i][j],v[i][k]+v[k][j]);
            }
        }
    }
    while(K--){
        int ans=0;
        int a,b;cin>>a>>b;
        v[a][b]=1;
        v[b][a]=1;
        for(int k = 1;k<=n*m;k++){
            v[a][k]=min(v[b][k]+1,v[a][k]);
            v[k][a]=v[a][k];
            v[k][b]=min(v[k][b],v[k][a]+1);
            v[b][k]=v[k][b];
        }
        for(int i = 1;i<=n*m;i++){
            for(int j = i+1;j<=n*m;j++){
                ans=max(ans,v[i][j]);
            }
        }
        cout<<ans<<endl;
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/40
1Elfogadva0/01ms316 KiB
2Hibás válasz0/014ms564 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Hibás válasz0/21ms512 KiB
7Hibás válasz0/23ms484 KiB
8Hibás válasz0/23ms316 KiB
9Hibás válasz0/23ms316 KiB
10Hibás válasz0/22ms316 KiB
11Hibás válasz0/23ms316 KiB
12Hibás válasz0/214ms736 KiB
13Hibás válasz0/27ms588 KiB
14Hibás válasz0/23ms316 KiB
15Hibás válasz0/27ms564 KiB
16Hibás válasz0/23ms508 KiB
17Hibás válasz0/26ms508 KiB
18Hibás válasz0/22ms316 KiB
19Hibás válasz0/21ms500 KiB
20Hibás válasz0/21ms316 KiB
21Hibás válasz0/22ms316 KiB
22Hibás válasz0/214ms728 KiB