from collections import deque
import sys
input = sys.stdin.readline
queue = deque()
def bfs(V, E, R, D, O):
V[R] = 1
D[R] = 0
O[R] = 1
depth = 0
order = 1
queue.append(E[R])
while queue:
depth += 1
for _ in range(len(queue)):
u = queue.popleft()
u.sort()
for edge in u:
if V[edge] == 0:
order += 1
V[edge] = 1
D[edge] = depth
O[edge] = order
queue.append(E[edge])
N, M, R = map(int, input().split())
E = [[] for _ in range(N + 1)]
V = [0 for _ in range(N + 1)]
D = [-1 for _ in range(N + 1)]
O = [0 for _ in range(N + 1)]
for i in range(1, M + 1):
u, v = map(int, input().split())
E[u].append(v)
E[v].append(u)
bfs(V, E, R, D, O)
answer = 0
for i in range(1, N + 1):
answer += D[i] * O[i]
print(answer)