Guest User

Untitled

a guest
Dec 8th, 2016
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. /******************************************************************
  2. * BISMILLAHIR RAHMANIR RAHIM *
  3. * Saddam Hossain shishir *
  4. * Hajee Mohammad Danesh Science & Technology University *
  5. * *
  6. ***************************************************************** */
  7. #include<iostream>
  8. #include<cstdio>
  9. #include<cstring>
  10. #include<map>
  11. #include<string>
  12. #include<set>
  13. #include<cmath>
  14. #include<cctype>
  15. #include<stack>
  16. #include<cstdlib>
  17. #include<utility>
  18. #include<vector>
  19. #include<deque>
  20. #include<queue>
  21. #include<algorithm>
  22.  
  23. #define sc scanf
  24. #define si(t) scanf("%d",&t)
  25. #define sl(t) scanf("%I64d",&t)
  26. #define sii(a,b) scanf("%d%d",&a,&b)
  27.  
  28. #define P(a) printf("%d\n",a)
  29. #define PLN(a) printf("%I64d ",a)
  30. #define pf printf
  31.  
  32. #define gcd(a,b) __gcd(a,b)
  33. #define ff first
  34. #define ss second
  35. #define pr1(a) cout<<a<<endl
  36. #define pr2(a,b) cout<<a<<" "<<b<<endl
  37. #define pb push_back
  38. #define pii pair<int,int>
  39. #define pi acos(-1.0)
  40. #define PI 3.1415926535897932385
  41. #define Sin(a) sin((pi*a)/180)
  42. #define siz 1000001
  43. #define mem(ar) memset(ar,0,sizeof ar)
  44. #define one(x) __builtin_popcount(x)
  45. typedef long long ll;
  46. using namespace std;
  47. //int dx[]= {-1,-1,0,0,1,1};
  48. //int dy[]= {-1,0,-1,1,0,1};
  49. //int dx[]= {0,0,1,-1};/*4 side move*/
  50. //int dy[]= {-1,1,0,0};/*4 side move*/
  51. //int dx[]= {1,1,0,-1,-1,-1,0,1};/*8 side move*/
  52. //int dy[]= {0,1,1,1,0,-1,-1,-1};/*8 side move*/
  53. //int dx[]={1,1,2,2,-1,-1,-2,-2};/*night move*/
  54. //int dy[]={2,-2,1,-1,2,-2,1,-1};/*night move*/
  55. map<ll,bool>visi;
  56. int ar[siz];
  57. vector<int>vec[10001];
  58. vector<int>vec2[10001];
  59. int vis[siz],b,id;
  60. int dis[siz];
  61. int Dfs2(int src)
  62. {
  63. if(vis[src]==1) return 0;
  64. vis[src]=1;
  65. for(int i=0; i<vec2[src].size(); i++)
  66. Dfs2(vec2[src][i]);
  67.  
  68. }
  69. int bfs(int src)
  70. {
  71. queue<int>qe;
  72. int v;
  73. vis[src]=1;
  74. qe.push(src);
  75. dis[src]=0;
  76. while(!qe.empty())
  77. {
  78. int u=qe.front();
  79. qe.pop();
  80. for(int i=0; i<vec[u].size(); i++)
  81. {
  82. v=vec[u][i];
  83. if(vis[v]==0)
  84. {
  85. vis[v]=1;
  86. qe.push(v);
  87. }
  88. }
  89. }
  90. int sum=0;
  91. for(int i=1; i<=b; i++)
  92. {
  93. if(vis[i]==1)
  94. sum++;
  95. }
  96. return sum;
  97.  
  98. }
  99. int main()
  100. {
  101. //freopen("input.txt","r",stdin);
  102. // freopen("A.txt","w",stdout);
  103. int i,j,n,m,a,c,ck,t,r,x,y,ans,rem,r1,lo,hi,sum,cs=1;
  104. si(t);
  105. while(t--)
  106. {
  107. id=0;
  108. mem(vis);
  109. si(a),si(b),si(c);
  110. for(i=0; i<a; i++) si(ar[i]);
  111. for(i=0; i<c; i++)
  112. {
  113. si(x),si(y);
  114. vec[x].pb(y);
  115. vec2[x].pb(y);
  116. vec2[y].pb(x);
  117. }
  118. Dfs2(1);
  119. for(i=1; i<=b; i++)
  120. {
  121. if(vis[i]==0)
  122. {
  123. id=1;
  124. break;
  125. }
  126. }
  127. if(id==1) printf("Case %d: 0\n",cs++);
  128. else
  129. {
  130. mem(vis);
  131. sum=9999999;
  132. for(i=0; i<a; i++)
  133. {
  134. x=ar[i];
  135. ans=bfs(x);
  136. sum=min(sum,ans);
  137. mem(vis);
  138. }
  139. printf("Case %d: %d\n",cs++,sum);
  140. }
  141. for(i=0; i<=b; i++) vec[i].clear(), vec2[i].clear();
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment