#include<iostream>
#include<vector>
using namespace std;
vector<int>adj[100000];
bool visited[100000];
int c=1;
void initialize()
{
for(int i=0;i<100000;i++)
visited[i] = false;
}
void dfs(int s)
{
visited[s] = true;
for(int i=0; i<adj[s].size(); i++)
{
if(visited[adj[s][i]] == false)
{
visited[adj[s][i]] = true;
c++;
dfs(adj[s][i]);
}
}
}
int main()
{
int nodes,edges,x,y,n;
cin>>nodes>>edges;
for(int i=0;i<edges;i++)
{
cin>>x>>y;
x--;y--;
adj[x].push_back(y);
adj[y].push_back(x);
}
initialize();
cin>>n;
dfs(n);
cout<<nodes-c;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPGludD5hZGpbMTAwMDAwXTsKYm9vbCB2aXNpdGVkWzEwMDAwMF07CmludCBjPTE7CnZvaWQgaW5pdGlhbGl6ZSgpCnsKICAgIGZvcihpbnQgaT0wO2k8MTAwMDAwO2krKykKICAgICAgICB2aXNpdGVkW2ldID0gZmFsc2U7Cn0Kdm9pZCBkZnMoaW50IHMpCnsKICAgIHZpc2l0ZWRbc10gPSB0cnVlOwogICAgZm9yKGludCBpPTA7IGk8YWRqW3NdLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGlmKHZpc2l0ZWRbYWRqW3NdW2ldXSA9PSBmYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzaXRlZFthZGpbc11baV1dID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgICAgIGRmcyhhZGpbc11baV0pOwogICAgICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IG5vZGVzLGVkZ2VzLHgseSxuOwogICAgY2luPj5ub2Rlcz4+ZWRnZXM7CiAgICBmb3IoaW50IGk9MDtpPGVkZ2VzO2krKykKICAgIHsKICAgICAgICBjaW4+Png+Pnk7CiAgICAgICAgeC0tO3ktLTsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKHkpOwogICAgICAgIGFkalt5XS5wdXNoX2JhY2soeCk7CiAgICB9CiAgICBpbml0aWFsaXplKCk7CiAgICBjaW4+Pm47CiAgICBkZnMobik7CiAgICBjb3V0PDxub2Rlcy1jOwogICAgcmV0dXJuIDA7Cn0K