#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
const int mxn = 5e4 + 5;
int n,m,s,cnt[mxn],ans;
set<pair<int,int>> adj[mxn];
void dijsktra(int s) {
int dist[mxn];
memset(dist,60,sizeof dist);
int oo = dist[0];
dist[s] = 0;
cnt[s] = 1;
priority_queue<pii,vector<pii>,greater<pii>> q;
q.push({0,s});
while(!q.empty()) {
auto mx = q.top();
q.pop();
int len = mx.first , u = mx.second;
if(len > dist[u]) continue;
for(auto v : adj[u]) {
if(dist[u] + v.second == dist[v.first]) cnt[v.first] += cnt[u];
else if(dist[u] + v.second < dist[v.first]) {
dist[v.first] = dist[u] + v.second;
cnt[v.first] = cnt[u];
q.push({dist[v.first] , v.first});
}
}
}
for(int i = 1;i <= n;i++) {
if(dist[i] < oo && cnt[i] >= 2) ans ++;
}
cout << ans << '\n';
}
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> s;
for(int i = 0;i < m;i++) {
int u,v;
cin >> u >> v;
adj[u].insert({v,1});
}
dijsktra(s);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CmNvbnN0IGludCBteG4gPSA1ZTQgKyA1OwppbnQgbixtLHMsY250W214bl0sYW5zOwpzZXQ8cGFpcjxpbnQsaW50Pj4gYWRqW214bl07CnZvaWQgZGlqc2t0cmEoaW50IHMpIHsKICAgIGludCBkaXN0W214bl07CiAgICBtZW1zZXQoZGlzdCw2MCxzaXplb2YgZGlzdCk7CiAgICBpbnQgb28gPSBkaXN0WzBdOwogICAgZGlzdFtzXSA9IDA7CiAgICBjbnRbc10gPSAxOwogICAgcHJpb3JpdHlfcXVldWU8cGlpLHZlY3RvcjxwaWk+LGdyZWF0ZXI8cGlpPj4gcTsKICAgIHEucHVzaCh7MCxzfSk7CiAgICB3aGlsZSghcS5lbXB0eSgpKSB7CiAgICAgICAgYXV0byBteCA9IHEudG9wKCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBpbnQgbGVuID0gbXguZmlyc3QgLCB1ID0gbXguc2Vjb25kOwogICAgICAgIGlmKGxlbiA+IGRpc3RbdV0pIGNvbnRpbnVlOwogICAgICAgIGZvcihhdXRvIHYgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaWYoZGlzdFt1XSArIHYuc2Vjb25kID09IGRpc3Rbdi5maXJzdF0pIGNudFt2LmZpcnN0XSArPSBjbnRbdV07CiAgICAgICAgICAgIGVsc2UgaWYoZGlzdFt1XSArIHYuc2Vjb25kIDwgZGlzdFt2LmZpcnN0XSkgewogICAgICAgICAgICAgICAgZGlzdFt2LmZpcnN0XSA9IGRpc3RbdV0gKyB2LnNlY29uZDsKICAgICAgICAgICAgICAgIGNudFt2LmZpcnN0XSA9IGNudFt1XTsKICAgICAgICAgICAgICAgIHEucHVzaCh7ZGlzdFt2LmZpcnN0XSAsIHYuZmlyc3R9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaSA9IDE7aSA8PSBuO2krKykgewogICAgICAgIGlmKGRpc3RbaV0gPCBvbyAmJiBjbnRbaV0gPj0gMikgYW5zICsrOwogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKfQppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBjaW4gPj4gbiA+PiBtID4+IHM7CiAgICBmb3IoaW50IGkgPSAwO2kgPCBtO2krKykgewogICAgICAgIGludCB1LHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhZGpbdV0uaW5zZXJ0KHt2LDF9KTsKICAgIH0KICAgIGRpanNrdHJhKHMpOwogICAgcmV0dXJuIDA7Cn0K