• Source
    1. #include <iostream>
    2. #include <algorithm>
    3. using namespace std;
    4.  
    5. struct data
    6. {
    7. string fatherN;
    8. string sonN;
    9. int ageR;
    10. int ageSon;
    11. } typedef data;
    12.  
    13. int cmp (data a, data b)
    14. {
    15. if (a.ageSon<b.ageSon) return 0;
    16. else if (a.ageSon==b.ageSon)
    17. {
    18. if (a.sonN>b.sonN) return 0;
    19. }
    20. return 1;
    21. }
    22.  
    23. int x;
    24. data linkDL[102];
    25. void Dequy (string fth, int kc)
    26. {
    27. for (int i=1; i<=x; i++)
    28. {
    29. if (fth==linkDL[i].fatherN)
    30. {
    31. if (fth=="Ted")
    32. {
    33. linkDL[i].ageSon=100-linkDL[i].ageR;
    34. kc=100-linkDL[i].ageR;
    35. Dequy (linkDL[i].sonN, kc);
    36. }
    37. else
    38. {
    39. linkDL[i].ageSon=kc-linkDL[i].ageR;
    40. Dequy (linkDL[i].sonN, kc-linkDL[i].ageR);
    41. }
    42. }
    43. }
    44. }
    45.  
    46. int main ()
    47. {
    48. int t;
    49. cin>>t;
    50. for (int k=1; k<=t; k++)
    51. {
    52. cin>>x;
    53. for (int i=1; i<=x; i++)
    54. {
    55. cin>>linkDL[i].fatherN>>linkDL[i].sonN>>linkDL[i].ageR;
    56. }
    57. Dequy ("Ted", 0);
    58. sort (linkDL+1, linkDL+x+1, cmp);
    59. cout<<"DATASET "<<k<<endl;
    60. for (int i=1; i<=x; i++)
    61. {
    62. cout<<linkDL[i].sonN<<" "<<linkDL[i].ageSon<<endl;
    63. }
    64. }
    65. return 0;
    66. }