using
System;
using
System.Collections.Generic;
public
class
GFG
{
static
List<
int
> []g =
new
List<
int
>[10001];
static
int
[]vis =
new
int
[10001];
static
int
[]dist =
new
int
[10001];
static
void
BFS(
int
src)
{
Queue<
int
> q =
new
Queue<
int
>();
q.Enqueue(src);
vis[src] = 1;
dist[src] = 0;
while
(q.Count!=0) {
int
curr = q.Peek();
q.Dequeue();
foreach
(
int
child
in
g[curr]) {
if
(vis[child] == 0) {
q.Enqueue(child);
dist[child] = dist[curr] + 1;
vis[child] = 1;
}
}
}
}
static
void
buildGraph(
int
M,
int
[,]arr)
{
for
(
int
i = 0; i < M; i++) {
g[arr[i,0]].Add(arr[i,1]);
g[arr[i,1]].Add(arr[i,0]);
}
}
static
void
shortestDistance(
int
N,
int
M,
int
[,]arr)
{
buildGraph(M, arr);
BFS(1);
Console.Write(dist[N]);
}
public
static
void
Main(String[] args)
{
int
N = 3, M = 2;
int
[,]arr = { { 1, 2 }, { 2, 3 } };
for
(
int
i = 0; i < g.Length; i++)
{
g[i] =
new
List<
int
>();
}
shortestDistance(N, M, arr);
}
}