1 solutions

  • 0
    @ 2025-12-10 19:09:24
    #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