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 |
|
|
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 |