이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
    #include <bits/stdc++.h>
    using namespace std;
    int grid[255][255];
    vector<pair<int,int> > step;
    void dfs(int x, int y){
    	if(x<0||x>250||y<0||y>250) return;
    	if(grid[x][y]) return;
    	grid[x][y]=1;
    	for(pair<int,int> i:step){
    		if(x+i.first>=0&&x+i.first<=250&&y+i.second>=0&&y+i.second<=250){
    			if(grid[x+i.first][y+i.second]==0) dfs(x+i.first,y+i.second);
    		}
    	}
    }
    int32_t main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	int n;
    	cin >> n;
    	pair<int,int> arr[n];
    	for(int i=0; i<n; i++) cin >> arr[i].first >> arr[i].second;
    	if(n==2||n==1) cout << -1;
    	else{
    		for(int i=0; i<n; i++){
    			for(int j=0; j<n; j++){
    				if(i==j) continue;
    				step.push_back({arr[i].first-arr[j].first,arr[i].second-arr[j].second});
    			}
    		}
    		int cnt=0;
    		for(int i=0; i<250; i++){
    			for(int j=0; j<250; j++){
    				if(grid[i][j]) continue;
    				cnt++;
    				dfs(i,j);
    			}
    		}
    		cout << (cnt>40000?-1:cnt);
    	}
    }
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |