Advertisement
Josif_tepe

Untitled

Apr 26th, 2021
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5. vector<int> graph[1000010];
  6. bool visited[1000010];
  7. int main() {
  8.     int n;
  9.     cin >> n;
  10.     int b1,b2,p;
  11.     cin >> b1 >> b2 >> p;
  12.     int a[100010];
  13.     int b[100010];
  14.     for(int i=0;i<b1;i++){
  15.         cin >> a[i];
  16.     }
  17.     for(int i =0;i<b2;i++){
  18.         cin >> b[i];
  19.     }
  20.     int m;
  21.     cin >> m;
  22.     for(int i = 0;i<m;i++) {
  23.         int r, l;
  24.         cin >> r >> l;
  25.         graph[r].push_back(l);
  26.         graph[l].push_back(r);
  27.     }
  28.  
  29.  
  30.     for (int i = 0; i <=n ; i++) {
  31.         visited[i] = false;
  32.     }
  33.     for(int i=0;i<b1;i++){
  34.         visited[a[i]] = true;
  35.     }
  36.     for(int i =0;i<b2;i++){
  37.         visited[b[i]] = true;
  38.     }
  39.     queue<int> q;
  40.     int gradovi = 0;
  41.     for(int i=0;i<b1;i++){
  42.         q.push(a[i]);
  43.         while(!q.empty()){
  44.             int tocka = q.front();
  45.             q.pop();
  46.             for(int j = 0;j<graph[tocka].size();j++){
  47.                 int sosed = graph [tocka][j];
  48.                 if(!visited[sosed]){
  49.                     visited[sosed] = true;
  50.                     q.push(sosed);
  51.                     gradovi++;
  52.                 }
  53.             }
  54.         }
  55.     }
  56.     if(gradovi > p) {
  57.         gradovi = p;
  58.     }
  59.     cout << gradovi << endl;
  60.  
  61. }
  62.  
  63.  
  64.  
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement