Source code for submission s512

fr.cpp

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <utility>
  6. #include <string>
  7. #include <deque>
  8. #include <list>
  9. #include <map>
  10. #include <queue>
  11. #include <set>
  12. #include <stack>
  13. #include <vector>
  14. using namespace std;
  15.  
  16. #define debug printf
  17. //#define debug blackhole
  18. void blackhole(...) {}
  19.  
  20. int ADJACENT[2000][2000];
  21. int ADJACENT_W[2000][2000];
  22. int ADJ_N[2000];
  23. int V;
  24.  
  25. long RECURSE(long FROM_W, long FROM_V, int v) {
  26. long ss = 0;
  27. if (ADJ_N[v] == 1) return FROM_W;
  28. for (int i = 0; i < ADJ_N[v]; i++) {
  29. if (ADJACENT[v][i] == FROM_V) continue;
  30. ss += RECURSE(ADJACENT_W[v][i], v, ADJACENT[v][i]);
  31. if (FROM_W != -1 && FROM_W < ss) {
  32. ss = FROM_W; break;
  33. }
  34. }
  35. if (FROM_W != -1 && FROM_W < ss) ss = FROM_W;
  36. return ss;
  37. }
  38.  
  39. void GO(int KOR) {
  40. for (int i=0;i<V;i++) {
  41. ADJ_N[i]=0;
  42. }
  43. for (int i = 0; i < V - 1; i++) {
  44. int a, b, weight;
  45. scanf("%d%d%d", &a, &b, &weight);
  46. ADJACENT[a][ADJ_N[a]] = b;
  47. ADJACENT_W[a][ADJ_N[a]++] = weight;
  48. ADJACENT[b][ADJ_N[b]] = a;
  49. ADJACENT_W[b][ADJ_N[b]++] = weight;
  50. }
  51.  
  52. printf("%ld\n", RECURSE(-1, -1, KOR));
  53. }
  54.  
  55. int main() {
  56. while (true) {
  57. int KOR;
  58. if (scanf("%d%d", &V, &KOR) != 2) break;
  59. GO(KOR);
  60. }
  61. return 0;
  62. }
  63.