package main import . "fmt" import . "os" import bf "bufio" func main() { rd:=bf.NewReader(Stdin) var n,m int Fscan(rd,&n,&m) graph := make([][]int, n+1) for i := 0; i < m; i++ { var a, b int Fscan(rd,&a,&b) graph[a] = append(graph[a], b) graph[b] = append(graph[b], a) } current := []int{1} visited := make([]bool, n+1) visited[1] = true cnt := 1 for len(current) > 0 { tmp := []int{} for _, v := range current { for _, e := range graph[v] { if visited[e] { continue } if e == n { Println(cnt) return } visited[e] = true tmp =append(tmp, e) } } current = tmp cnt++ } Println(-1) } /* 考察 入力の辺を全部つないでグラフにして 頂点1から頂点Nまでの最短ルートの辺の数が答え */