Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- #define M 10000
- int bfs(vector<int>v[M],int source,int desti)
- {
- queue<int>q;
- bool visited[M+5];
- memset(visited,false,sizeof(visited));
- int dist[M];
- memset(dist,M,sizeof(dist));
- q.push(source);
- dist[source]=0;
- visited[source]=true;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- for(int i=0;i<v[u].size();i++)
- {
- int k=v[u][i];
- if(visited[k]==false)
- {
- q.push(k);
- visited[k]=true;
- dist[k]=dist[u]+1;
- }
- }
- }
- return dist[desti];
- }
- int main()
- {
- int n,test=1;
- while(scanf("%d",&n)!=EOF)
- {
- vector<int>v[M];
- int i,k,j,source,desti,path,num=1;
- while(n--)
- {
- cin>>k;
- v[num].push_back(k);
- v[k].push_back(num);
- }
- for(i=1;i<19;i++)
- {
- cin>>n;
- num++;
- while(n--)
- {
- cin>>k;
- v[num].push_back(k);
- v[k].push_back(num);
- }
- }
- int t;
- j=0;
- cin>>t;
- printf("Test Set #%d\n",test++);
- while(j<t)
- {
- cin>>source>>desti;
- path=bfs(v,source,desti);
- printf("%d to %d: %d\n",source,desti,path);
- j++;
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment