4.合根植物 - 蓝桥云课 (lanqiao.cn)
题目描述
w星球的一个种植园,被分成mxn个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物
这种植物有个特点,它的根可能会沿着南北或东西方向伸展从而与另一个格子的植物合成为一体。
如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?
import os
import sys# 请在此输入您的代码
n,m=map(int,input().split())
k=int(input())father=list(range(m*n+10)) #初始化父节点 father[1]=1 、father[2]=2def find(x): #不断向前溯源寻找该节点所代表的元素(因为有些元素被merge改变成其他元素了)if father(x) != x: #father[2]=3father[x]=find(father[x])return father[x] def merge(x,y): #如2,3if find(x) != find(y): #如果元素不相等 find(2)=2 find(3)=3father[find(x)]=father(y) #合并 father[2]=3
ans=0
for i in range(k):a,b=map(int,input().split())if find(a) != find(b):merge(a,b)ans+=1 #可以看样例里的红线,除了一开始一条线连接两个,后面都是一条线连多一个元素(不是很明白为什么减去这个数就是答案)
print(m*n-ans)