73202024-01-07 11:07:49HorakZsofiRácsháló gráfcpp17Elfogadva 50/5061ms4144 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ÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1812 KiB
2Elfogadva0/059ms2072 KiB
3Elfogadva2/23ms2140 KiB
4Elfogadva2/23ms2328 KiB
5Elfogadva2/23ms2576 KiB
6Elfogadva2/23ms2792 KiB
7Elfogadva2/24ms2864 KiB
8Elfogadva2/24ms2976 KiB
9Elfogadva2/24ms3108 KiB
10Elfogadva2/24ms3092 KiB
11Elfogadva2/24ms3216 KiB
12Elfogadva2/210ms3312 KiB
13Elfogadva3/328ms3372 KiB
14Elfogadva3/36ms3368 KiB
15Elfogadva3/328ms3472 KiB
16Elfogadva3/34ms3524 KiB
17Elfogadva3/325ms3512 KiB
18Elfogadva3/310ms3768 KiB
19Elfogadva3/33ms3924 KiB
20Elfogadva3/33ms4004 KiB
21Elfogadva3/313ms4016 KiB
22Elfogadva3/361ms4144 KiB