| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么运行错误type
rec = record
x, y, d: longint;
end;
var
n, m, i, now, ans, min, max: longint;
e: array[0..55010] of rec;
f: array[0..1000] of longint;
procedure qs(l, r: longint);
var
i, j, mid: longint;
t: rec;
begin
i := l;
j := r;
mid := e[(l+r) div 2].d;
repeat
while e[i].d < mid do inc(i);
while e[j].d > mid do dec(j);
if i <= j then
begin
t := e[i];
e[i] := e[j];
e[j] := t;
inc(i);
dec(j);
end;
until i > j;
if l < j then qs(l,j);
if i < r then qs(i,r);
end;
function get(k: longint):longint;
begin
if f[k] = k then exit(k);
f[k] := get(f[k]);
get := f[k];
end;
procedure kur(st: longint);
var
i, p, x, y: longint;
begin
p := 0;
for i := 1 to n do f[i] := i;
i := st;
min := e[st].d;
while (p < n-1) or (i <= m) do
begin
x := get(e[i].x);
y := get(e[i].y);
if x <> y then
begin
f[x] := y;
max := e[i].d;
inc(p);
end;
inc(i);
end;
if p <> n-1 then now := maxlongint else now := max-min;
end;
begin
readln(n,m);
while not((n = 0) and (m = 0)) do
begin
//fillchar(e,sizeof(e),0);
for i := 1 to m do
readln(e[i].x,e[i].y,e[i].d);
qs(1,m);
ans := maxlongint;
for i := 1 to m-n+2 do
begin
kur(i);
if now < ans then ans := now;
end;
if ans = maxlongint then writeln(-1) else writeln(ans);
readln(n,m);
end;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator