fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int G[100][100], n, m, S[100], sz;
  6. int ans[100], curr[100], vis[100];
  7. bool fd = false;
  8.  
  9. void solve(int start, int len){
  10. vis[start] = 1;
  11. curr[len] = start;
  12. if(len == m-1){
  13. fd = true;
  14. for(int i = 0;i <= m;i++) ans[i] = curr[i];return;
  15. }
  16. for(int i = 0;i < n;i++){
  17. if(G[start][i] == 1 && vis[i] == 0 && S[i] == 1){
  18. solve(i, len+1);
  19. }
  20. }
  21. vis[start] = 0;
  22. }
  23.  
  24. int main(){
  25. cin >> n >> sz;
  26. int p, q;
  27. for(int i = 0;i < sz;i++){
  28. cin >> p >> q;G[p][q] = 1;G[q][p] = 1;
  29. }
  30. cin >> m;
  31. for(int i = 0;i < m;i++){
  32. cin >> p;S[p] = 1;
  33. }
  34. for(int i = 0;i < n;i++){
  35. if(S[i] == 1){
  36. solve(i, 0);
  37. break;
  38. }
  39. }
  40. if(fd == false){
  41. cout << "No such path" << endl;
  42. }else{
  43. for(int i = 0;i < m;i++){
  44. cout << ans[i] << " ";
  45. }cout << endl;
  46. }
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 3456KB
stdin
5 7
0 1
1 2
2 3
3 0
0 2
2 4
1 4
5
0 1 2 3 4
stdout
0 1 4 2 3