Informatika gyűjtemény

Egy szinttel feljebb pt_halozat.dpr

2004050607080910

NézetNyomtat

pt_halozat.dpr (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
program halozat;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const FNum  = '1';
      FName = 'halozat';
      FBe   = FName+FNum+'.be';
      FKi   = FName+FNum+'.kix';

type  TEl   = record
                a,b:byte;
                k:byte;
                van:boolean;
              end;
      TTomb = array[1..4950] of TEl;
      TApa  = array[1..100]of byte;

var n:byte;
    t:TTomb;
    apa:TApa;

procedure load;
var be:textfile;
    i:integer;
begin
  assignfile(be,Fbe);
  reset(be);
  readln(be,N);
  for i:=1 to ((N*(N-1)) div 2) do
    begin
      readln(be,t[i].a,t[i].b,t[i].k);
      t[i].van:=false;
    end;
  closefile(be);
  for i:=1 to N do apa[i]:=i;
end;

procedure swap(i,j:integer);
var c:TEl;
begin
  c:=t[i];
  t[i]:=t[j];
  t[j]:=c;
end;

procedure rendez;
var i,j,min:integer;
begin
  for i:=1 to ((N*(N-1)) div 2)-1 do
    begin
      min:=i;
      for j:=i+1 to ((N*(N-1)) div 2) do
        if t[j].k<t[min].then min:=j;
      swap(i,min);
    end;
end;

function os(x:byte):byte;
begin
  if apa[x]=then os:=else os:=os(apa[x]);
end;

procedure main;
var i:integer;
begin
  for i:=1 to ((N*(N-1)) div 2) do
    begin
      if os(t[i].a)<>os(t[i].b) then
        begin
          t[i].van:=true;
          apa[os(t[i].a)]:=os(t[i].b);
        end;
    end;
end;

procedure final;
var sum,i:integer;
    ki:textfile;
begin
  sum:=0;
  for i:=1 to ((N*(N-1)) div 2) do
    if t[i].van then sum:=sum+t[i].k;
  assignfile(ki,Fki);
  rewrite(ki);
  writeln(ki,sum);
  closefile(ki);
end;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  load;
  rendez;
  main;
  final;
end.
(Vissza)