试题 历届试题 合根植物
题意:给出已经相连的一些线段,求出有几株合根植物。
思路:并查集。
代码
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int pre[1000005];
int find(int a)
{
if(a==pre[a])
return a;
else
return pre[a]=find(pre[a]);
}
void unite(int a,int b)
{
int fa=find(a);
int fb=find(b);
if(fa!=fb)
pre[fa]=fb;
}
int main()
{
cin>>n>>m;
for(int i=1; i<=n*m; i++)
{
pre[i]=i;
}
cin>>k;
while(k--)
{
int a,b;
cin>>a>>b;
unite(a,b);
}
int ans=0;
for(int i=1; i<=n*m; i++)
if(pre[i]==i)
ans++;
cout<<ans<<endl;
return 0;
}