Advertisement
Josif_tepe

Untitled

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