19039: 合根植物发表时间:2022-10-28 23:20 19039: 合根植物 时间限制: 1 Sec 内存限制: 128 MB 题目描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 输入 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。 输出 一个整数,表示一共有多少株合根植物。 样例输入 Copy 5 4 16 2 3 1 5 5 9 4 8 7 8 9 10 10 11 11 12 10 14 12 16 14 18 17 18 15 19 19 20 9 13 13 17 样例输出 Copy 5 提示 其合根情况参考下图
解析: 这道题可以不用考虑两个植物是否相邻,直接用并查集做即可。
#include<bits/stdc++.h> #define N 1000005 using namespace std; int fa[N]; int n,m,k; int find_fa(int x){return x!=fa[x]?fa[x]=find_fa(fa[x]):x;} void union_set(int x,int y){ int fx=find_fa(x),fy=find_fa(y); fa[fx]=fy; } int main(){ cin>>n>>m>>k;n=n*m; for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=k;i++){ int x,y; cin>>x>>y; union_set(x,y); } int ans=0; for(int i=1;i<=n;i++) if(fa[i]==i) ans++; cout<<ans; return 0; } 上一篇14469: 连通块
下一篇14846: 朋友
文章分类:
数据结构例题
|