本文共 1730 字,大约阅读时间需要 5 分钟。
题目链接:
gg。。==
#include #include #include #include #include #include #include #include using namespace std;#define ll long long#define inf 10000000#define N 55typedef pair pii;struct node{ int lx, ly, rx, ry; void put(){printf(" (%d,%d) - (%d,%d) ",lx,ly,rx,ry);}}a[N];vector X,Y;ll mp[200][200];int vis[200][200];int step[4][2] = {-1,0, 0,-1, 0,1, 1,0};int n;void bfs(int x, int y){ queue qx, qy; qx.push(x); qy.push(y); vis[x][y]=1; while(!qx.empty()) { int ux = qx.front(); qx.pop(); int uy = qy.front(); qy.pop(); for(int i = 0; i < 4; i++) { int vx = step[i][0] + ux, vy = step[i][1] + uy; if(vx<0 || vx>=200 || vy<0 || vy>=200)continue; if(vis[vx][vy])continue; if(mp[ux][uy]!=mp[vx][vy])continue; vis[vx][vy] = 1; qx.push(vx); qy.push(vy); } }}void input(){ X.clear(); Y.clear(); for(int i = 1; i <= n; i++) { scanf("%d %d %d %d",&a[i].lx,&a[i].ly,&a[i].rx,&a[i].ry); X.push_back(a[i].lx); Y.push_back(a[i].ly); X.push_back(a[i].rx); Y.push_back(a[i].ry); } sort(X.begin(), X.end()); X.erase(unique(X.begin(), X.end()), X.end()); sort(Y.begin(), Y.end()); Y.erase(unique(Y.begin(), Y.end()), Y.end()); for(int i = 1; i <= n; i++){ a[i].lx = lower_bound(X.begin(), X.end(), a[i].lx) - X.begin()+10; a[i].rx = lower_bound(X.begin(), X.end(), a[i].rx) - X.begin()+10; a[i].ly = lower_bound(Y.begin(), Y.end(), a[i].ly) - Y.begin()+10; a[i].ry = lower_bound(Y.begin(), Y.end(), a[i].ry) - Y.begin()+10; }/**/}int main(){ int i, j; while(scanf("%d",&n), n){ input(); memset(mp, 0, sizeof mp); memset(vis, 0, sizeof vis); for(i = 1; i <= n; i++) for(j = a[i].lx; j < a[i].rx; j++) for(int k = a[i].ry; k< a[i].ly; k++) mp[j][k] = mp[j][k] | (1ll<
转载地址:http://ralhl.baihongyu.com/