抄我代码的我会………………你们
#include<bits/stdc++.h>
using namespace std;
int n , m , k , f , minn=1e+8 ;
struct node {
vector<int> fr_boy , fr_girl ;
int sum=0 ;
bool t[555] ;
} a[555];
bool t[1231] ;
void dfs(node *y ,node *now) {
for(auto x:now->fr_boy) {
y->t[x] = 1 ;
}
for(auto x:now->fr_girl) {
if(!t[x]) {
t[x] = 1 ;
dfs(y,&a[x]) ;
}
}
}
int main() {
cin >> n >> m >> k >> f ;
for(int i=0; i<m; i++) {
int l , r ;
scanf("%d%d",&l,&r) ;
a[l].fr_boy.push_back(r) ;
}
for(int i=0; i<f; i++) {
int l , r ;
scanf("%d%d",&l,&r) ;
a[l].fr_girl.push_back(r) ;
a[r].fr_girl.push_back(l) ;
}
for(int i=1; i<=n; i++) {
memset(t,0,sizeof(t)) ;
dfs(&a[i],&a[i]) ;
for(int j=1; j<=n; j++) {
if(a[i].t[j]) a[i].sum++ ;
}
// cout << a[i].sum << endl ;
minn = min(minn,a[i].sum+k);
}
if(minn>n)cout << n ;
else
cout << minn ;
return 0 ;
}