Problem5933--最短距离

5933: 最短距离

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

某场宴会上有 $n$ 个人
每个人认识宴会上的一些人,如果 $a$ 认识 $b$,我们就说 $a$ 和 $b$ 的疏远度是 $1$,特别地,$a$ 和 $a$ 的疏远度是 0。
$a$ 和 $c$ 可以通过一个同时认识他们俩的 $b$ 作介绍来互相认识,这时,我们说 $a$ 和 $c$ 的疏远度是 $a$ 和 $b$ 的疏远度加上 $b$ 和 $c$ 疏远度。
选定两个人,问如何作介绍,使得 $a$ 和 $b$ 的疏远度最小?无法介绍来认识输出 !

Input

第一行两个正整数 $n\ (2 \leq n \leq 10^3),\ m\ (1 \leq m < n)$,表示宴会的人数,和有多少对人互相认识。
接下来 $m$ 行,每行两个数 $p,\ q\ (1 \leq p,\ q \leq n,\ p \neq q)$,表示 $p$ 和 $q$ 互相认识。
接下来一行两个正整数 $a,\ b\ (1 \leq a,\ b \leq n)$,表示询问 $a$ 和 $b$ 的最小疏远度。

Output

可以认识输出最小疏远度,否则输出 !。

Sample 1 Input

3 2
1 2
1 3
2 3

Sample 1 Output

2

Sample 2 Input

4 2
1 2
1 3
2 4

Sample 2 Output

!

HINT

题目来源:51Nod 2081

Source/Category

基础算法 4.100.BFS