#include<bits/stdc++.h> using namespace std; int tc=1,position=0; int bfs(int src, int TTL,map <int, vector<int> > edges) { map<int,int> visited,level; int unreach=0; queue<int>Q; Q.push(src); position=1; visited[src]=1; level[src]=0; while(!Q.empty()) { int u=Q.front(); for(int i=0;i<edges[u].size();i++) { int v=edges[u][i]; if(!visited[v]) { level[v]=level[u]+1; if(level[v]>TTL) unreach++; //printf("unreach = %d\n",unreach); j node gula unreach visited[v]=1; Q.push(v); position++;//printf("%d unreach\n",unreach); koto num node teke jay na } } Q.pop(); } return unreach; } int main() { vector<pair< int,int > >check(100); //pairakare chack ex: 35 2 , 35 3; int edge,x,y,node,source,ans; while(1) { map <int,vector<int> > edges; //a[0]=0,1,2;a[1]=2,3,4,5; scanf("%d",&edge); if(edge==0) return 0; for(int i=0;i<edge;i++) { cin>>x>>y; edges[x].push_back(y); edges[y].push_back(x); } int index=0,totalunreach; while(1) { cin>>check[index].first>>check[index].second; // 35 2 if(check[index].first ==0 and check[index].second==0) break; index++; } for(int i=0;i<index;i++) { ans=bfs(check[i].first,check[i].second,edges);// printf("val= %d" ,ans); totalunreach = ans + edges.size()-position; printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n",tc++,totalunreach,check[i].first,check[i].second); position=0; } } return 0; }