fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. vector<int>adj_list[100];
  4. int visited[100];
  5. int dis[100];
  6. int par[100];
  7. int zaoa_zay=0;
  8. int BFS(int start,int dest)
  9. {
  10. visited[start]=1;
  11. dis[start]=0;
  12. par[start]=-1;
  13. queue<int>q;
  14. q.push(start);
  15. while(!q.empty())
  16. {
  17. int currnode=q.front();
  18. cout<<"*"<<currnode<<endl;
  19. q.pop();
  20. for(int i=0;i<adj_list[currnode][i];i++)
  21. {
  22. int child=adj_list[currnode][i];
  23. if(visited[child]==0)
  24. {
  25. q.push(child);
  26. visited[child]=1;
  27. dis[child]=dis[currnode]+1;
  28. par[child]=currnode;
  29. if(child==dest)
  30. {
  31. return dis[child];
  32. }
  33. }
  34. }
  35. }
  36. return -1;
  37. }
  38. int main()
  39. {
  40. int node,edge;
  41. cin>>node>>edge;
  42. for(int i=1;i<=edge;i++)
  43. {
  44. int u,v;
  45. cin>>u>>v;
  46. adj_list[u].push_back(v);
  47. }
  48. int start,dest;
  49. cin>>start>>dest;
  50. int min_dist=BFS(start,dest);
  51. if(min_dist=-1)
  52. {
  53. cout<<"connected,Distence:"<<min_dist<<endl;
  54. stack<int>st;
  55. int currnode= dest;
  56. while(currnode!=-1)
  57. {
  58. st.push(currnode);
  59. currnode=par[currnode];
  60. }
  61. while(!st.empty())
  62. {
  63. cout<<st.top()<<endl;
  64. st.pop();
  65. }
  66. }
  67. else
  68. {
  69. cout<<"disconnected"<<endl;
  70. }
  71. }
Success #stdin #stdout 0.01s 5276KB
stdin
10 15
1 2
1 3
2 3
2 8
2 5
2 10
3 4
6 4
4 7
5 7
7 10
6 9
8 6
9 8
9 10
1 10
stdout
*1
*2
connected,Distence:-1
1
2
10