7320 2024. 01. 07 11:07:49 HorakZsofi Rácsháló gráf cpp17 Elfogadva 50/50 61ms 4144 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>>szl;
int n, m;
int f(int cs){
	queue<int>sor;
	vector<int>mennyi(n*m, -1);
	sor.push(cs);
	mennyi[cs]=0;
	while(!sor.empty()){
		int a=sor.front();
		sor.pop();
		for(int x:szl[a]){
			if(mennyi[x]==-1){
				mennyi[x]=mennyi[a]+1;
				sor.push(x);
			}
		}	
	}
	int maxi=0;
	for(int x:mennyi){
		maxi=max(maxi, x);
	}
	return maxi;
}
int main() {
	int k;
	cin>>n>>m>>k;
	szl.resize(n*m);
	for(int i=0; i<n-1; i++){
		for(int j=0; j<m-1; j++){
			szl[j+i*m].push_back(j+i*m+1);
			szl[j+i*m+1].push_back(j+i*m);
			szl[j+i*m].push_back(j+(i+1)*m);
			szl[j+(i+1)*m].push_back(j+i*m);
		}	
	}
	for(int i=(n-1)*m; i<n*m-1; i++){
		szl[i].push_back(i+1);
		szl[i+1].push_back(i);
	}
	for(int i=m-1; i<m*(n-1); i+=m){
		szl[i].push_back(i+m);
		szl[i+m].push_back(i);
	}
	/*for(int i=0; i<n*m; i++){
		cout<<i+1<<":";
		for(int x: szl[i]){
			cout<<" "<<x+1;
		}
		cout<<endl;
	}*/
	for(int i=0; i<k; i++){
		int a, b;
		cin>>a>>b;
		szl[a-1].push_back(b-1);
		szl[b-1].push_back(a-1);
		int maxi=0;
		for(int j=0; j<n*m; j++){
			maxi=max(maxi, f(j));
		}
		cout<<maxi<<endl;
		
	}

}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 59ms 2072 KiB
3 Elfogadva 2/2 3ms 2140 KiB
4 Elfogadva 2/2 3ms 2328 KiB
5 Elfogadva 2/2 3ms 2576 KiB
6 Elfogadva 2/2 3ms 2792 KiB
7 Elfogadva 2/2 4ms 2864 KiB
8 Elfogadva 2/2 4ms 2976 KiB
9 Elfogadva 2/2 4ms 3108 KiB
10 Elfogadva 2/2 4ms 3092 KiB
11 Elfogadva 2/2 4ms 3216 KiB
12 Elfogadva 2/2 10ms 3312 KiB
13 Elfogadva 3/3 28ms 3372 KiB
14 Elfogadva 3/3 6ms 3368 KiB
15 Elfogadva 3/3 28ms 3472 KiB
16 Elfogadva 3/3 4ms 3524 KiB
17 Elfogadva 3/3 25ms 3512 KiB
18 Elfogadva 3/3 10ms 3768 KiB
19 Elfogadva 3/3 3ms 3924 KiB
20 Elfogadva 3/3 3ms 4004 KiB
21 Elfogadva 3/3 13ms 4016 KiB
22 Elfogadva 3/3 61ms 4144 KiB