251462026-02-18 09:20:41BravoRácsháló gráfcpp17Időlimit túllépés 38/50598ms556 KiB
#include <iostream>
#include <fstream>
#include <cmath>
#include <climits>
using namespace std;

int mintav(int d[], bool volt[], int n){
    int m=INT_MAX,mini;
    for(int i=0;i<n;i++){
        if(volt[i]==false && d[i]<=m){
            m=d[i];
            mini=i;
        }
    }
    return mini;
}
void kiir(int d[],int n){
    for(int i=0;i<n;i++){
        cout << d[i] << " ";
    }
}
int main()
{
    int n,m,k;
    //ifstream f("csm.txt");
    cin >> n >> m >> k;
    int b[n][m];
    int x=1;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            b[i][j]=x;
            x++;
        }
    }
    x--;
    int a[x][x];
    for(int i=0;i<x;i++){
        for(int j=0;j<x;j++){
            a[i][j]=0;
        }
    }
    int x1[4]={1,-1,0,0};
    int y1[4]={0,0,1,-1};
    for(int i=0;i<x;i++){
        int o=0;
        int x2,y2;
        for(int j=0;j<n;j++){
            for(int u=0;u<m;u++){
                if(b[j][u]==i+1){
                    x2=j;
                    y2=u;
                }
            }
        }
        while(o!=4){
            if(x2+x1[o]>=0 && x2+x1[o]<n && y2+y1[o]>=0 && y2+y1[o]<m){
                int z=0;
                int x3=x2+x1[o], y3=y2+y1[o];
                z=b[x3][y3];
                a[i][z-1]=1;
                a[z-1][i]=1;
            }
            o++;
        }
    }
    for(int u=0;u<k;u++){
        int ujx,ujy;
        int b[x];
        int c=INT_MIN;
        cin >> ujx >> ujy;
        a[ujx-1][ujy-1]=1;
        a[ujy-1][ujx-1]=1;
        int d[x];
        bool volt[x];
        for(int i=0;i<x;i++){
            for(int j=0;j<x;j++){
                d[j]=INT_MAX;
                volt[j]=false;
            }
            d[i]=0;
            for(int j=0;j<x-1;j++){
                int u=mintav(d,volt,x);
                volt[u]=true;
                for(int o=0;o<x;o++){
                    if(!volt[o] && a[u][o] && d[u]!=INT_MAX && d[u]+a[u][o]<d[o]){
                        d[o]=d[u]+a[u][o];
                    }
                }
            }
            c=INT_MIN;
            for(int j=0;j<x;j++){
                if(d[j]>c){
                    c=d[j];
                }
            }
            b[i]=c;
        }
        c=INT_MIN;
        for(int i=0;i<x;i++){
            if(b[i]>c){
                c=b[i];
            }
        }
        cout << c << endl;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/50
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0575ms316 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/22ms316 KiB
5Elfogadva2/22ms316 KiB
6Elfogadva2/24ms316 KiB
7Elfogadva2/259ms316 KiB
8Elfogadva2/257ms316 KiB
9Elfogadva2/250ms316 KiB
10Elfogadva2/219ms316 KiB
11Elfogadva2/264ms316 KiB
12Elfogadva2/2418ms556 KiB
13Időlimit túllépés0/3583ms508 KiB
14Elfogadva3/381ms316 KiB
15Időlimit túllépés0/3586ms316 KiB
16Elfogadva3/359ms316 KiB
17Időlimit túllépés0/3573ms316 KiB
18Elfogadva3/3136ms316 KiB
19Elfogadva3/34ms316 KiB
20Elfogadva3/38ms316 KiB
21Elfogadva3/3187ms428 KiB
22Időlimit túllépés0/3598ms556 KiB