Submission #2557060


Source Code Expand

import std.algorithm, std.container, std.conv, std.math, std.range, std.typecons, std.stdio, std.string;

auto rdsp(){return readln.splitter;}
void pick(R,T)(ref R r,ref T t){t=r.front.to!T;r.popFront;}
void readV(T...)(ref T t){auto r=rdsp;foreach(ref v;t)pick(r,v);}

void main()
{
  int n; readV(n);

  auto g = GraphW!(int, long)(n);
  foreach (_; 0..n-1) {
    int a, b, c; readV(a, b, c); --a; --b;
    g.addEdgeB(a, b, c);
  }

  int q, k; readV(q, k); --k;

  auto d = new long[](n), vst = new bool[](n);

  struct VD { int v; long d; }
  auto qu = DList!int(k);
  vst[k] = true;

  while (!qu.empty) {
    auto v = qu.front; qu.removeFront();
    foreach (e; g[v].filter!(e => !vst[e.dst])) {
      d[e.dst] = d[v] + e.wt;
      vst[e.dst] = true;
      qu.insertBack(e.dst);
    }
  }

  foreach (_; 0..q) {
    int x, y; readV(x, y); --x; --y;
    writeln(d[x]+d[y]);
  }
}

struct GraphW(N = int, W = int, W i = 10^^9)
{
  alias Node = N, Wt = W, inf = i;
  struct Edge { Node src, dst; Wt wt; alias cap = wt; }
  Node n;
  Edge[][] g;
  alias g this;
  this(Node n) { this.n = n; g = new Edge[][](n); }
  void addEdge(Node u, Node v, Wt w) { g[u] ~= Edge(u, v, w); }
  void addEdgeB(Node u, Node v, Wt w) { g[u] ~= Edge(u, v, w); g[v] ~= Edge(v, u, w); }
}

Submission Info

Submission Time
Task D - Transit Tree Path
User tesh
Language D (DMD64 v2.070.1)
Score 400
Code Size 1320 Byte
Status AC
Exec Time 174 ms
Memory 20604 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 31
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_1.txt AC 1 ms 256 KB
subtask_1_10.txt AC 29 ms 2044 KB
subtask_1_11.txt AC 1 ms 256 KB
subtask_1_12.txt AC 3 ms 380 KB
subtask_1_13.txt AC 10 ms 892 KB
subtask_1_14.txt AC 1 ms 256 KB
subtask_1_15.txt AC 7 ms 1148 KB
subtask_1_16.txt AC 172 ms 17148 KB
subtask_1_17.txt AC 174 ms 17276 KB
subtask_1_18.txt AC 172 ms 18172 KB
subtask_1_19.txt AC 173 ms 18684 KB
subtask_1_2.txt AC 3 ms 508 KB
subtask_1_20.txt AC 162 ms 20604 KB
subtask_1_21.txt AC 163 ms 18812 KB
subtask_1_22.txt AC 165 ms 19580 KB
subtask_1_23.txt AC 164 ms 18300 KB
subtask_1_24.txt AC 147 ms 16380 KB
subtask_1_25.txt AC 150 ms 17404 KB
subtask_1_26.txt AC 149 ms 17276 KB
subtask_1_27.txt AC 149 ms 16636 KB
subtask_1_28.txt AC 153 ms 20604 KB
subtask_1_3.txt AC 119 ms 12796 KB
subtask_1_4.txt AC 1 ms 256 KB
subtask_1_5.txt AC 44 ms 2300 KB
subtask_1_6.txt AC 17 ms 3836 KB
subtask_1_7.txt AC 36 ms 2172 KB
subtask_1_8.txt AC 1 ms 256 KB
subtask_1_9.txt AC 133 ms 15228 KB