Advertisement
andreisophie

Spanning Tree

Jan 21st, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool a[30005][30005],s[30005];
  6. int n,st[30005],ic;
  7.  
  8. void citire()
  9. {
  10.     int x,y;
  11.     cin>>n;
  12.     for (int i=1;i<=n;i++)
  13.     {
  14.         cin>>x>>y;
  15.         a[x][y]=a[y][x]=1;
  16.     }
  17. }
  18.  
  19. bool solutie(int k)
  20. {
  21.     for (int i=1;i<=n;i++)
  22.         if (a[st[k]][i] && s[i] && i!=st[k-1])
  23.         {
  24.             ic=i;
  25.             return true;
  26.         }
  27.     return false;
  28. }
  29.  
  30. void afisare(int k)
  31. {
  32.     for (int i=k;i>=0;i++)
  33.         if (st[i]==ic)
  34.             cout<<k-i;
  35. }
  36.  
  37. void bck(int k)
  38. {
  39.     for (int i=1;i<=n;i++)
  40.     {
  41.         st[k]=i;
  42.         if (a[st[k-1]][i] && !s[i])
  43.         {
  44.             s[i]=1;
  45.             if (solutie(k))
  46.                 afisare(k);
  47.             else
  48.                 bck(k+1);
  49.         }
  50.     }
  51. }
  52.  
  53. int main()
  54. {
  55.     citire();
  56.     st[1]=1;
  57.     bck(2);
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement