#include #include #include using namespace std; int main() { int n, b1, b2, poeni; cin >> n >> b1 >> b2 >> poeni; int kosta[b1]; for(int i = 0; i < b1; i++) { cin >> kosta[i]; } int kiril[b2]; for(int i = 0; i < b2; i++) { cin >> kiril[i]; } int m; cin >> m; vector graph[n + 10]; for(int i = 0; i < m; i++) { int a, b; cin >> a >> b; graph[a].push_back(b); graph[b].push_back(a); } bool visited[n + 10]; for(int i = 0; i <= n; i++) { visited[i] = false; } for(int i = 0; i < b2; i++) { visited[kiril[i]] = true; } queue q; for(int i = 0; i < b1; i++) { visited[kosta[i]] = true; q.push(kosta[i]); } int gradovi = 0; while (!q.empty()) { int teme = q.front(); q.pop(); for(int i = 0; i < graph[teme].size(); i++) { int sosed = graph[teme][i]; if(!visited[sosed] and gradovi + 1 <= poeni) { visited[sosed] = true; q.push(sosed); gradovi++; } } } cout << gradovi << endl; return 0; }