记录编号 53125 评测结果 AAAAAAAAAA
题目名称 岛国 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.763 s
提交时间 2013-02-21 16:10:36 内存使用 3.17 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<deque>
using namespace std;
class Rectangle{
public:
	int minx,maxx;
	int miny,maxy;
}rec[5001];
bool adj_rec(Rectangle a,Rectangle b){
	if(a.minx>b.maxx+1||a.maxx<b.minx-1||a.miny>b.maxy+1||a.maxy<b.miny-1) return 0;
	if(a.minx==b.maxx+1){
		if(a.miny==b.maxy+1) return 0;
		if(a.maxy==b.miny-1) return 0;
	}
	if(a.maxx==b.minx-1){
		if(a.miny==b.maxy+1) return 0;
		if(a.maxy==b.miny-1) return 0;
	}
	return 1;
}
deque<int> c[5001];
bool visit[5001]={0};
int n;
void DFS(int x){
	visit[x]=true;
	int i;
	for(i=0;i<c[x].size();i++){
		if(visit[c[x][i]]) continue;
		DFS(c[x][i]);
	}
}
void output(void){
	int ans=0;
	int i;
	for(i=0;i<n;i++){
		if(!visit[i]){
			ans++;
			DFS(i);
		}
	}
	printf("%d\n",ans);
}
int main(){
	freopen("jx.in","r",stdin);
	freopen("jx.out","w",stdout);
	scanf("%d",&n);
	int i,j;
	for(i=0;i<n;i++){
		scanf("%d%d%d%d",&rec[i].minx,&rec[i].miny,&rec[i].maxx,&rec[i].maxy);
		for(j=0;j<i;j++){
			if(adj_rec(rec[i],rec[j])) c[i].push_back(j),c[j].push_back(i);
		}
	}
	output();
	return 0;
}