Advertisement
Josif_tepe

Untitled

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