Advertisement
shamiul93

1111 LightOj - Best Picnic Ever

Feb 12th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstring>
  4. #include<queue>
  5. #include<vector>
  6. #include<cstdio>
  7.  
  8. using namespace std;
  9.  
  10. #define ll long long
  11.  
  12. ll k, n, m;
  13. vector<ll> vp;
  14. vector<ll> vec[1010];
  15.  
  16.  
  17.  
  18. ll bfs()
  19. {
  20.     int reached[1010];
  21.  
  22.     memset(reached, 0, sizeof(reached));
  23.  
  24.     for (ll i = 0; i < k; i++)
  25.     {
  26.         int vis[1010]={};
  27.         ll src;
  28.         queue<ll> q;
  29.         src = vp[i];
  30.         q.push(src);
  31.         vis[src] = 1;
  32.         reached[src]++;
  33.  
  34.         while (!q.empty())
  35.         {
  36.             ll node;
  37.             node = q.front();
  38.             q.pop();
  39.  
  40.             for (ll i = 0; i < vec[node].size(); i++)
  41.             {
  42.                 ll now;
  43.                 now = vec[node][i];
  44.  
  45.                 if (vis[now] == 0)
  46.                 {
  47.                     vis[now] = 1;
  48.                     reached[now]++;
  49.                     q.push(now);
  50.                 }
  51.             }
  52.         }
  53.  
  54.     }
  55.  
  56.     ll tem = 0 ;
  57.     for(ll i = 0 ; i < 1001 ; i++)
  58.     {
  59. //        cout << reached[i] << " ";
  60.         if(reached[i]==k)
  61.         {
  62.             tem++ ;
  63.         }
  64.  
  65.     }
  66. //    cout << endl ;
  67.  
  68.     return tem ;
  69. }
  70.  
  71.  
  72. int main()
  73. {
  74. //    freopen("in.txt","r",stdin);
  75. //    freopen("out.txt","w" , stdout);
  76.     ll T, t = 0, a;
  77.     cin >> T;
  78.  
  79.     ll ans;
  80.     while (T--)
  81.     {
  82.         t++;
  83.         cin >> k >> n >> m;
  84.         for (ll i = 0; i< k; i++)
  85.         {
  86.             cin >> a;
  87.             vp.push_back(a);
  88.         }
  89.  
  90.         for (ll i = 0; i< m; i++)
  91.         {
  92.             ll u, v;
  93.             cin >> u >> v;
  94.             vec[u].push_back(v);
  95.         }
  96.  
  97.  
  98.  
  99.         ans = bfs();
  100.  
  101.         printf("Case %lld: %lld\n",t , ans);
  102.  
  103.         vp.clear();
  104.         for (ll i = 0; i< 1010; i++)
  105.         {
  106.             vec[i].clear();
  107.         }
  108.     }
  109.  
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement