Блог пользователя x1te

Автор x1te, 14 лет назад, По-русски

Всем привет! Я тут недавно решал тренировки и столкнулся с одной проблемой. Проблема возникла при написании(а написании ли?) СНМ в задаче D с вот этой тренировки. Старшие товарищи, если вы не против, можете, пожалуйста, сказать мне, как можно оптимизировать мой код, чтобы он не получал ТЛ.

Вроде бы глупых ошибок нет, да и все что мог, то соптимизировал. Заранее спасибо!

P.S. Извините за паскаль :]

UPD: Гигантское спасибо за советы, TL исправил. Сейчас буду бороться с WA =)
UPD2: Ура, сдал! Теперь баги с переполнениями нету, спасибо caustique за это.

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
14 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится

Сжатия путей нет.

function findRoot(x: longint): longint;
begin
	if parent[x] <> parent[parent[x]] then 
		parent[x] := findRoot(parent[x]);
	result := parent[x];
end;
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Какая то странная у Вас функция объединения.
Если size равны, то к которому подвешиваем надо увеличить на 1. Иначе к большему подвесить меньшее.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Отправь под FPC. Известная проблема, что в Delphi int64 тормозит.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +30 Проголосовать: не нравится

"извините за паскаль" made my day :)