簡單來說,你的敵人是我的朋友
主要關鍵程式就在這
nf[k] ==>指向不是K的朋友中的根節點
解設你收到j,k 意思就是j與k不是朋友
換句話說不是k的朋友的根結點,就會是j的朋友的根結點
so 才有nf[j] = f[k],nf[k] = f[j]
for i in range(0,len(p) , 2):
j,k = p[i] , p[i+1]
if k in nf:
jj = find(nf[k])
set(j , jj)##set f[j]與他的快樂夥伴都以jj為根結點
else:
f[j] = j
if j in nf:
kk = find(nf[j])
set(k , kk)
else:
f[k] = k
nf[j] = f[k]
nf[k] = f[j]