Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<algorithm>
  6. #include<set>
  7. #include<map>
  8. #include<utility>
  9. #include<vector>
  10. #include<string>
  11. #include<stack>
  12. #include<queue>
  13. #include<iostream>
  14. #include<assert.h>
  15. using namespace std;
  16.  
  17. const int N = 100005;
  18.  
  19. int d[N],vst[N],True,md[N];
  20. vector<int>e[N];
  21.  
  22. void bfs( int u )
  23. {
  24.  
  25.     int i,j,k,v;
  26.  
  27.     True++;
  28.     queue<int>q;
  29.  
  30.     q.push( u );
  31.     d[u]=0;
  32.     md[u]=max( md[u],d[u] );
  33.  
  34.  
  35.     while(!q.empty())
  36.     {
  37.         u=q.front();
  38.         q.pop();
  39.  
  40.         for( i=0;i<(int)e[u].size();i++ )
  41.         {
  42.             v=e[u][i];
  43.             if(vst[v]==True)continue;
  44.             d[v]=d[u]+1;
  45.             md[v]=max( md[v],d[v] );
  46.             vst[v]=True;
  47.             q.push( v );
  48.         }
  49.  
  50.     }
  51.  
  52.  
  53. }
  54.  
  55. int main()
  56. {
  57.     freopen("in.txt","r",stdin);
  58.  
  59.     int t,n,m,u,v,x,y,r,i,j,k;
  60.     cin>>t;
  61.  
  62.     while(t--)
  63.     {
  64.         cin>>n>>r;
  65.  
  66.         for(i=0;i<N;i++)e[i].clear();
  67.  
  68.         for(i=0;i<n;i++)
  69.         {
  70.             scanf("%d%d",&u,&m);
  71.             for(j=0;j<m;j++)
  72.             {
  73.                 scanf("%d",&v);
  74.                 e[u].push_back(v);
  75.             }
  76.  
  77.         }
  78.  
  79.         while(r--)
  80.         {
  81.             scanf("%d",&k);
  82.  
  83.             memset(md,-1,sizeof(md));
  84.  
  85.             for( i=0;i<k;i++ )
  86.             {
  87.                 scanf("%d",&u);
  88.                 bfs( u );
  89.             }
  90.         }
  91.  
  92.         j=-1;
  93.  
  94.         for(i=0;i<N;i++)
  95.         {
  96.             if( md[i]!=-1 )
  97.             {
  98.                 cout<<i<<" "<<md[i]<<endl;
  99.                 if(j==-1 || md[j]>md[i])j=i;
  100.             }
  101.         }
  102.  
  103.  
  104.         printf("%d %d\n",md[j],j);
  105.  
  106.  
  107.  
  108.  
  109.  
  110.     }
  111.  
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement