Bajtek只有撞到雪堆才会停下来,若两个雪堆之间横坐标或纵坐标相同则建立一条边连接两个雪堆。
最后dfs寻找独立的图的数量
#include <iostream> using namespace std; int n; int x[1111]; int y[1111]; bool v[1111]={0}; void dfs(int i) { v[i]=true; for (int j=1;j<=n;j++) { if (!v[j]&&(x[i]==x[j]||y[i]==y[j])) { dfs(j); } } } int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>x[i]>>y[i]; } int ans=0; for (int i=1;i<=n;i++) { if (!v[i]) { dfs(i); ans++; } } cout<<ans-1<<endl; return 0; }