1 /**************************************************************
2 Problem: 2015
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:352 ms
7 Memory:5096 kb
8 ****************************************************************/
9
10 type
11 point=^node;
12 node=record
13 g,w:longint;
14 next:point;
15 end;
16 var
17 i,j,k,l,m,n,t:longint;
18 a:array[0..200000] of point;
19 b,c:array[0..200000] of longint;
20 procedure add(x,y,z:longint);inline;
21 var p:point;
22 begin
23 new(p);p^.g:=y;p^.w:=z;
24 p^.next:=a[x];a[x]:=p;
25 end;
26 procedure spfa(x:longint);inline;
27 var i,j,k,l,f,r:longint;p:point;
28 begin
29 b[1]:=x;f:=1;r:=2;
30 fillchar(c,sizeof(c),0);
31 c[x]:=1;
32 while f<r do
33 begin
34 p:=a[b[f]];
35 while p<>nil do
36 begin
37 if (c[p^.g]=0) or (c[p^.g]>(c[b[f]]+p^.w)) then
38 begin
39 c[p^.g]:=c[b[f]]+p^.w;
40 b[r]:=p^.g;
41 inc(r);
42 end;
43 p:=p^.next;
44 end;
45 inc(f);
46 end;
47 for i:=1 to n do dec(c[i]);
48 end;
49 begin
50 readln(n,m,t);
51 for i:=1 to n do a[i]:=nil;
52 for i:=1 to m do
53 begin
54 readln(j,k,l);
55 add(j,k,l);add(k,j,l);
56 end;
57 spfa(1);
58 for i:=1 to t do
59 begin
60 readln(j,k);
61 writeln(c[j]+c[k]);
62 end;
63 end.