197162025-12-19 17:47:09KristófRácsháló gráfcpp17Elfogadva 50/5024ms592 KiB
#include <iostream>
#include <vector>
using namespace std;

void solve(vector<vector<int>> &adj,vector<vector<int>> &dist,int &n,int &m)
    {
    for(int k=0;k<n*m;k++)
        {
        for(int i=0;i<n*m;i++)
            {
            for(int j=0;j<n*m;j++)
                {
                dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
                }
            }
        }
    }
int maxe=-1;
void upd(vector<vector<int>> &adj,vector<vector<int>> &dist,int &n,int &m,int &to,int &from)
    {
    if(dist[from][to]==1)
        {
        cout<<maxe<<endl;
        return;
        }
    dist[from][to]=1;
    dist[to][from]=1;
    for(int i=0;i<n*m;i++)
        {
        for(int j=0;j<n*m;j++)
            {
            dist[i][j]=min(dist[i][j],dist[i][to]+1+dist[from][j]);
            dist[i][j]=min(dist[i][j],dist[i][from]+1+dist[to][j]);
            }
        }


    maxe=-1;
    for(int i=0;i<n*m;i++)
        {
        for(int j=0;j<n*m;j++)
            {
            maxe=max(maxe,dist[i][j]);
            }
        }
    cout<<maxe<<endl;

    }

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n,m,q;
    cin>>n>>m>>q;
    vector<vector<int>> adj(n*m);
    vector<vector<int>> dist(n*m,vector<int>(n*m,1e4));
    for(int i=0;i<n*m;i++)
        {
        dist[i][i]=0;
        }
    for(int i=0;i<n*m;i++)
        {
        if(i%m!=m-1)
            {
            dist[i][i+1]=1;
            dist[i+1][i]=1;
            adj[i+1].push_back(i);adj[i].push_back(i+1);
            }
        if(i+m<n*m)
            {
            dist[i][i+m]=1;
            dist[i+m][i]=1;
            adj[i+m].push_back(i);adj[i].push_back(i+m);
            }
        }
    int v,to;
    solve(adj,dist,n,m);
    for(int q1=0;q1<q;q1++)
        {
        cin>>v>>to;
        v--;
        to--;
        //dist[v][to]=min(1,dist[v][to]);
        //dist[to][v]=min(1,dist[to][v]);
        upd(adj,dist,n,m,to,v);
        }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/024ms564 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/23ms316 KiB
8Elfogadva2/23ms316 KiB
9Elfogadva2/23ms468 KiB
10Elfogadva2/22ms448 KiB
11Elfogadva2/23ms316 KiB
12Elfogadva2/216ms568 KiB
13Elfogadva3/310ms316 KiB
14Elfogadva3/33ms316 KiB
15Elfogadva3/310ms316 KiB
16Elfogadva3/33ms508 KiB
17Elfogadva3/38ms316 KiB
18Elfogadva3/33ms508 KiB
19Elfogadva3/31ms316 KiB
20Elfogadva3/31ms512 KiB
21Elfogadva3/34ms316 KiB
22Elfogadva3/323ms592 KiB