#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<vector>
using namespace std;
vector<int> mm[5005];
vector<int> nn[5005];
int a,b,e,p;
int vis[5100];
int num[5100];
void dfs1(int pos)
{
num[pos] ++;
int len = mm[pos].size();
for(int i = 0; i < len; i ++)
{
if( vis[ mm[pos][i] ] ) continue;
vis[ mm[pos][i] ] = 1;
dfs1( mm[pos][i] );
}
}
void dfs2(int pos)
{
num[pos] ++;
int len = nn[pos].size();
for(int i = 0; i < len; i ++)
{
if( vis[ nn[pos][i]] ) continue;
vis[ nn[pos][i] ] = 1;
dfs2( nn[pos][i] );
}
}
int main()
{
scanf("%d%d%d%d",&a,&b,&e,&p);
for(int i = 0; i < p; i ++)
{
int aa,bb;
scanf("%d%d",&aa,&bb);
mm[bb].push_back(aa);
nn[aa].push_back(bb);
}
memset(vis,0,sizeof(vis));
memset(num,0,sizeof(num));
for(int i = 0; i < e; i ++)
{
memset(vis,0,sizeof(vis));
dfs1(i);
}
int res1 = 0,res2 = 0;
for(int i = 0; i < e; i ++)
{
if( e - num[i] < a) res1 ++;
if( e - num[i] < b) res2 ++;
}
memset(vis,0,sizeof(vis));
memset(num,0,sizeof(num));
for(int i = 0; i < e; i ++)
{
memset(vis,0,sizeof(vis));
dfs2(i);
}
int res3 = 0;
for(int i = 0; i < e; i ++)
if( num[i] > b)
res3 ++;
printf("%d\n%d\n%d\n",res1,res2,res3);
return 0;
}
两次搜索,一次搜后面有多少人,一次搜前面有多少人