Source code for submission s848

fr.cpp

  1. //
  2. // File: fr.cc
  3. // Author: cteam030
  4. //
  5. // Created on October 19, 2013, 12:07 PM
  6. //
  7.  
  8. #include <stdlib.h>
  9. #include <iostream>
  10. #include <string>
  11. #include <vector>
  12.  
  13. using namespace std;
  14.  
  15. //
  16. //
  17. //
  18.  
  19. struct Node {
  20. //int id;
  21. int child;
  22. int effort;
  23. };
  24.  
  25. int getEffort(vector<Node> nodes[], int id, int effort);
  26.  
  27. vector<bool> banned_ids;
  28.  
  29. int main(int argc, char** argv) {
  30.  
  31. size_t n, cent;
  32.  
  33. while(cin >> n >> cent) {
  34. //Node nodes[n+1];
  35. vector<Node> nodes[n+1];
  36. for(size_t i = 1;i<n;i++) {
  37. int id,id2,eff;
  38. cin >> id >> id2 >> eff;
  39. Node n1, n2;
  40. n1.child = id2;
  41. n2.child = id;
  42. n1.effort = eff;
  43. n2.effort = eff;
  44.  
  45. nodes[id].push_back(n1);
  46. nodes[id2].push_back(n2);
  47. banned_ids.push_back(false);
  48. }
  49. banned_ids.push_back(false);
  50. banned_ids.push_back(false);
  51.  
  52.  
  53.  
  54. /////////////////////////
  55. int res = 0;
  56. /*for(size_t i=0; i<nodes[cent].subNodes.size(); i++) {
  57.   res += getEffort(nodes, nodes[cent].subNodes[i]);
  58.   }*/
  59.  
  60. for(size_t i=0; i<nodes[cent].size(); i++) {
  61. banned_ids[cent] = true;
  62. res += getEffort(nodes, nodes[cent][i].child, nodes[cent][i].effort);
  63. }
  64.  
  65. cout << res << "\n";
  66. }
  67.  
  68. return (0);
  69. }
  70.  
  71. int getEffort(vector<Node> nodes[], int id, int effort) {
  72. banned_ids[id] = true;
  73. if(nodes[id].size() <= 1){
  74. return nodes[id][0].effort;
  75. }
  76. int res = 0;
  77. for(size_t i=0; i<nodes[id].size(); i++) {
  78. if(!banned_ids[nodes[id][i].child])
  79. res += getEffort(nodes, nodes[id][i].child, nodes[id][i].effort);
  80. }
  81. if(res > effort)
  82. return effort;
  83. else
  84. return res;
  85. }
  86.  
  87.