package main
import (
"fmt"
"os"
)
const SIZE =6
//找到根节点
func findRoot(x int,data []int)int {
root :=x
if data[root]==-1{
return root
} else {
root = findRoot(data[root],data)
return root
}
}
// 0 表示有环了
func union(x int,y int,data []int,rank []int) int {
xRoot := findRoot(x,data)
yRoot := findRoot(y,data)
if xRoot ==yRoot{
return 0
}else {
if rank[xRoot]>rank[yRoot]{
data[yRoot] = xRoot
rank[xRoot] +=1
}else {
data[xRoot] = yRoot
rank[yRoot] +=1
}
return 1
}
}
func initData(data []int,rank []int){
for index:=0;index<SIZE;index++{
data[index] =-1
rank[index] =0
}
}
func main() {
data := make([]int,SIZE)
rank :=make([]int,SIZE)
initData(data,rank)
graph :=[6][2]int{
{0,1},{1,2},{1,3},{3,4},{2,5},
{5,4},
}
for i:=0;i<SIZE;i++{
res := union(graph[i][0],graph[i][1],data,rank)
if res==0{
fmt.Println("cycle detect")
os.Exit(1)
}
}
fmt.Println("no cycle")
}