Advertisement
Josif_tepe

Untitled

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