Immortal Grass
题号:NC200046
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

为了登上神秘之山,Vanis开启了他的上山之旅。

现在他站在某个古怪而低矮的建筑物旁,据说山中总共有n个这样的建筑物,每个建筑物上都刻着互不相同的介于1到n之间(包含1和n)的整数编号,他面前的这个建筑物上写着数字k。
山间道路崎岖,有时还会有奇奇怪怪的某种草本植物挡路,村民把这种植物叫做“不朽之草”,或简称为“仙草 (immortal grass)”。受到热心村民的指点,Vanis知道了哪些建筑之间有道路能够互相到达,这样的线索总共有m条。
Vanis想知道从它所在的编号为k的建筑物出发,最多能到达多少个不同编号的建筑(包括最初的建筑物k)。

形式化地说,有一个包含n个顶点m条边的无向图,从k号顶点开始走,希望知道最多能到达多少个包含k在内的不同的顶点。边和顶点都可途径多次。

输入描述:

第一行输入三个整数n,m,k,分别表示建筑的数量,道路的数量,以及Vanis面前的建筑物的编号,相邻整数间使用一个空格符分隔。
接下来输入m行,每行包含两个正整数,之间使用一个空格符分隔,将这种输入开始的第i行的两个整数记作u_iv_i,表示u_iv_i之间有一条无向边。

数据规范:
* .
* .
* .
* .
* .
* 保证无重边和自环。
* 保证所有输入都是整数。

输出描述:

输出一个正整数,表示能够到达的顶点个数。
示例1

输入

复制
5 3 3
1 3
2 5
2 4

输出

复制
2