Cod sursa(job #554301)

Utilizator boti12botiGal Botond boti12boti Data 14 martie 2011 19:02:15
Problema Arbore partial de cost minim Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 0.89 kb
type rec=record
     a,b,c:longint;
     end;
     vek=array[1..400000] of rec;
     vak=array[1..200000] of longint;
var i,j,n,m,s,k,min,c,d:longint; f:text; v:vek; x,q:vak;
begin
  assign(f,'apm.in');
  reset(f);
  readln(f,n,m);
  for i:=1 to m do
    readln(f,v[i].a,v[i].b,v[i].c);
  close(f);
  c:=0;
  for i:=1 to n do
    x[i]:=i;
  repeat
  min:=10000;
  for i:=1 to m do
    if (v[i].c<min) and (v[i].a>0) then begin min:=v[i].c; k:=i; end;
    if x[v[k].a]<>x[v[k].b] then begin
    d:=x[v[k].b];
  for i:=1 to n do begin
   if x[i]=d then x[i]:=x[v[k].a];
   end;
  inc(c); q[c]:=k;
  end;
  v[k].a:=v[k].a*(-1);
  until c=n-1;
  s:=0;
  for i:=1 to c do
    s:=s+v[q[i]].c;
  assign(f,'apm.out');
  rewrite(f);
  writeln(f,s);
  writeln(f,c);
  for i:=1 to c do     begin
    write(f,v[q[i]].a*(-1),' ');
    writeln(f,v[q[i]].b);
    end;
  close(f);
end.