Дистанционная подготовка: Ошибка во время исполнения программы?
Ошибка во время исполнения программы?
от Павел Крылов - Понедельник 25 Январь 2016, 00:49
111540. Компоненты связности
  program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,Classes;

type
  Tarr=array[1..100000,1..2] of integer;
  TresArr=array[1..100000] of boolean;

var
  a:Tarr;
  b:TresArr;
  used:TresArr;
  n,m:integer;
  i,j,k:integer;
  sc:integer;
  l:integer;
function count(path:string):integer;
var
  n: integer;
  f:textfile;
begin
  n:=0;
  AssignFile(f,path);
  Reset(f);
  while not eof(f) do begin
    Readln(f);
    inc(n);
  end;
  CloseFile(f);
  result:=n;
end;
procedure dfs(var a:Tarr;l,r:integer;var flag:TresArr;n:integer);
var
  i,j:integer;
  res:boolean;
begin
  flag[n]:=true;
  used[n]:=true;
  for i:=l to r do
  begin
    res:=false;
    for j:=1 to m do
    begin
      if ((a[j,1]=n) and (a[j,2]=i)) or ((a[j,1]=i) and (a[j,2]=n)) then
        res:=true;
    end;
    if res then
    begin
      if not (flag[i]) then dfs(a,l,r,flag,i)
    end;
  end;
end;
var
  t1:TStringList;
  s:string;
begin
  t1:=TStringList.Create();
  reset(input,'input.txt');

  read(n);  //??????
  readln(m); //?????


  for i:=1 to n do
  begin
    b[i]:=false;
    used[i]:=false;
  end;

  for i:=1 to m do
  begin
    read(a[i,1]);
    readln(a[i,2]);
  end;

  i:=1;

  while i<=n do
  begin
    if not used[i] then
    begin
      dfs(a,1,n,b,i);
      l:=0;
      for j:=1 to n do
        if b[j] then
        inc(l);
      t1.add(inttostr(l));
      s:=''; 
      for j:=1 to n do
      begin
        if b[j] then
        s:=s+inttostr(j)+' ';
      end;
      t1.Add(s);
    for k:=1 to n do
    begin
      b[k]:=false;
    end; 
    end;

    Inc(i);
  end;

  t1.Insert(0,inttostr(t1.Count div 2));
  t1.SaveToFile('output.txt');

  close(input);

end.

Во всех тестах ошибка во время выполнения, у меня ошибки нет, что не так?