package main
import (
"fmt"
)
func main(){
var n int
fmt.Scan(&n)
var arr [][]int //二维数组初始化
for i := 0; i < n+1; i++ {
tmp := make([]int, n+1)
arr = append(arr, tmp)
}
var a int //存储到数组里面
var b int
for i:=1;i<n;i++{
fmt.Scan(&a)
fmt.Scan(&b)
arr[a][b]=1
}
for i:=1;i<n+1;i++{
for j:=1;j<n+1;j++{
fmt.Print(arr[i][j]," ")
}
fmt.Print("\n")
}
dfs(1,0,arr,n)
fmt.Println("max=",max)
fmt.Println("min path=",2*n-2-max)
}
/*
1、二维数组存图,有对称的问题
2、避免回溯的时候陷入死循环,走过的路要干掉,回头再变回来
3、二维数组的初始化,居然用两个append
*/
var max int
func dfs(begin int,len int,arr [][]int,n int){
if max<len{max = len}
for i:=1;i<n+1;i++{
if arr[begin][i]==1 || arr[i][begin]==1{
arr[begin][i]= 0
arr[i][begin]=0
dfs(i,len+1,arr,n)
arr[begin][i]= 1
arr[i][begin]= 1
}
}
}