ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1069. Код Прюфера

HELP!!! why i got TLE? (+)
Послано zhangqi 17 апр 2003 14:57
i use 0(n^2) algo, but i got TlE.
here is my code

-----------------------------------------------

program The_Prufer_Code;
   const maxn=7500;
   var n:integer;
       a:array[1..maxn]of integer;
       num:array[1..maxn]of integer;
       link:array[1..maxn,1..2]of integer;
       mark:array[1..maxn]of integer;
       ans:array[1..maxn]of boolean;
       total:integer;



   procedure init;
      var i:integer;
    begin
      fillchar(num,sizeof(num),0);
      fillchar(a,sizeof(a),0);
      n:=0;
      while not eof do begin
        inc(n);
        read(a[n]);
        inc(num[a[n]]);
      end;
      inc(n);
    end;



   procedure work;
      var i,j:integer;
    begin
      fillchar(link,sizeof(link),0);
      total:=0;
      for i:=1 to n-1 do begin
        for j:=1 to n-1 do if num[j]=0 then begin
          inc(total);
          link[total,1]:=a[i];
          link[total,2]:=j;
          dec(num[j]);
          break;
        end;
        dec(num[a[i]]);
      end;
    end;



   procedure print;
      var i,j,k:integer;
    begin
      fillchar(mark,sizeof(mark),0);
      for i:=1 to n do begin
        write(i,':');
        fillchar(ans,sizeof(ans),0);
        for j:=1 to total do if mark[j]<2 then begin
          for k:=1 to 2 do
            if link[j,k]=i then begin
              ans[link[j,3-k]]:=true;
              inc(mark[j]);
              break;
            end;
        end;
        for j:=1 to n do
          if ans[j] then write(' ',j);
        writeln;
      end;
    end;



begin
  Init;
  Work;
  Print;
end.
O(N^2) is bad, use heaps --> (O log N) --> AC in 0.12 sec ---> :)
Послано Evil Hacker 17 апр 2003 18:41
If you encourage problems I can post my code.
problems with 69 make me think of bad things. also O(N) works, and now i see why use heaps :) ~nt~
Послано foxX 17 апр 2003 21:00
> If you encourage problems I can post my code.
Re: problems with 69 make me think of bad things. also O(N) works, and now i see why use heaps :) ~nt~
Послано Gheorghe Stefan 31 авг 2003 21:22
Please someone can post his AC because for 6 months i can't take AC
with a correct source (i'm sure of it...)