iletavcioski

Rizik

Mar 1st, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. vector<vector<int> >v;
  5. vector<int> visited(100002,0);
  6. vector<bool> vis(100002,false);
  7. int paricki;
  8. void dfs(int x)
  9. {
  10.     if(vis[x])
  11.         return;
  12.     if(visited[x]==0&&vis[x]==false)
  13.     {
  14.         paricki++;
  15.     }
  16.     vis[x]=true;
  17.      
  18.     for(int i=0;i<v[x].size();i++)
  19.     {
  20.         dfs(v[x][i]);
  21.     }
  22.  
  23. }
  24. int main()
  25. {
  26.     int n,a1,a2,k;
  27.      
  28.     cin>>n>>a1>>a2>>k;
  29.      
  30.     vector<int > vv;
  31.     v.insert(v.begin(),n+1,vv);
  32.     for(int i=0;i<a1;i++)
  33.     {
  34.         int a;
  35.         cin>>a;
  36.         a--;
  37.         visited[a]=2;
  38.         vv.push_back(a);
  39.     }
  40.     for(int i=0;i<a2;i++)
  41.     {
  42.         int a;
  43.         cin>>a;
  44.         a--;
  45.         visited[a]=1;
  46.         vis[a]=true;
  47.     }
  48.     int m;
  49.     cin>>m;
  50.     for(int i=0;i<m;i++)
  51.     {
  52.         int a,b;
  53.         cin>>a>>b;
  54.         a--;b--;
  55.         v[a].push_back(b);
  56.         v[b].push_back(a);
  57.     }
  58.  
  59.     for(int i=0;i<vv.size();i++)
  60.     {
  61.         dfs(vv[i]);
  62.     }
  63.     cout<<min(paricki,k)<<endl;
  64.     return 0;
  65. }
Add Comment
Please, Sign In to add comment