Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std ;
- int visited[100005] ;
- int cost[100005] ;
- vector<int>v[100005] ;
- int cnt ;
- int te=1 ;
- void bfs(int a,int b)
- {
- // cout<<a<<" "<<b<<endl ;
- //for(int k=1;k<=10000;k++)visited[k]=0 ;
- cnt=0 ;
- queue <int > q ;
- q.push(a) ;
- visited[a]=1 ;
- while(!q.empty())
- {
- int top = q.front() ;
- q.pop() ;
- for(int i=0; i<v[top].size() ; i++)
- {
- int aa = v[top][i] ;
- if(visited[aa]==0)
- {
- visited[aa]=1 ;
- cost[aa] = cost[top] + 1 ;
- //cout<<"Cost " <<cost[aa]<<"Got "<<aa<<endl ;
- if(cost[aa]<=b)
- {
- cnt++ ;
- }
- q.push(aa) ;
- }
- }
- }
- }
- int main()
- {
- int n ;
- while(cin >> n )
- {
- set<int> s ;
- //vector<int>v[1009] ;
- if(n==0)break ;
- for(int ii=0;ii<=100005 ;ii++)
- v[ii].clear() ;
- for(int i=1; i<=n; i++)
- {
- int a,b ;
- cin >> a >> b ;
- v[a].push_back(b) ;
- v[b].push_back(a) ;
- s.insert(a) ;
- s.insert(b) ;
- }
- int dd = s.size() ;
- int p, q ;
- // int te = 1 ;
- while(cin >> p >> q)
- {
- if(p==0 && q==0)break ;
- // cnt=0 ;
- bfs(p,q) ;
- printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n",te,dd-(cnt+1),p,q) ;
- te++ ;
- // cout<<cnt<<endl ;
- for(int k=1;k<=100000;k++)visited[k]=0 ;
- for(int k=1;k<=100000;k++)cost[k]=0 ;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement