• Source
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. struct data
    5. {
    6. int front;
    7. int behind;
    8. } typedef data;
    9.  
    10. int main ()
    11. {
    12. int n, x;
    13. cin>>n>>x;
    14. //init;
    15. data dlist [100005];
    16. for (int i=1; i<=n; i++)
    17. {
    18. dlist[i].front=i-1;
    19. dlist[i].behind=i+1;
    20. }
    21. //Run:
    22. for (int i=1; i<=x; i++)
    23. {
    24. int a, b;
    25. cin>>a>>b;
    26. // Xoa node;
    27. dlist[dlist[a].front].behind = dlist[a].behind;
    28. dlist[dlist[a].behind].front = dlist[a].front;
    29. //Chen node;
    30. dlist[dlist[b].front].behind = a;
    31. dlist[a].front = dlist[b].front;
    32. dlist[a].behind = b;
    33. dlist[b].front = a;
    34. }
    35. //Tìm node begin, end;
    36. int Begin, End;
    37. for (int i=1; i<=n; i++)
    38. {
    39. if (dlist[i].front==0)
    40. Begin = i;
    41. if (dlist[i].behind==n+1)
    42. End = i;
    43. }
    44. //In node;
    45. while (1)
    46. {
    47. if (Begin==End)
    48. {
    49. cout<<End;
    50. break;
    51. }
    52. cout<<Begin<<" ";
    53. Begin = dlist[Begin].behind;
    54. }
    55. return 0;
    56. }