1 solutions
-
0
#include<bits/stdc++.h> using namespace std; int n,cnt; int vis[2005][2005]; int Is[2005][2005]; int dotx[] = {-1,-1,0,0,1,1}; int doty[] = {-1,0,-1,1,0,1}; void bfs(int x,int y) { queue<pair<int,int> > q; q.push({x,y}); vis[x][y] = 1; while(!q.empty()) { int a = q.front().first,b = q.front().second; //狠狠批评 宽搜不弹出 q.pop(); for(int i=0;i<6;i++) { int t1 = a+dotx[i],t2 = b+doty[i]; if(!vis[t1][t2] && Is[t1][t2]) { vis[t1][t2] = 1; q.push({t1,t2}); } } } } int main() { cin >> n; for(int i=1;i<=n;i++) { int x,y; cin >> x >> y; Is[x+1001][y+1001] = 1; } for(int i=1;i<=2001;i++) for(int j=1;j<=2001;j++) if(!vis[i][j] && Is[i][j]) { bfs(i,j); cnt++; } cout << cnt; return 0; }
- 1
Information
- ID
- 588
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- (None)
- # Submissions
- 40
- Accepted
- 12
- Uploaded By