Cod sursa(job #3126208)

Utilizator anamaria29sSuditu Ana-Maria anamaria29s Data 6 mai 2023 12:57:23
Problema Heapuri Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.48 kb
class Node:
    def __init__(self, val):
        self.val = val
        self.rank = 0
        self.child = None
        self.sibling = None


class RankPairingHeap:
    def __init__(self):
        self.root = None

    def merge(self, h1, h2):
        if h1 is None:
            return h2
        if h2 is None:
            return h1
        if h1.val < h2.val:
            h2.sibling = h1.child
            h1.child = h2
            h1.rank += 1
            return h1
        else:
            h1.sibling = h2.child
            h2.child = h1
            h2.rank += 1
            return h2

    def insert(self, val):
        new_node = Node(val)
        self.root = self.merge(self.root, new_node)

    def find_min(self):
        return self.root.val

    def delete_min(self):
        if self.root is None:
            return None
        min_val = self.root.val
        if self.root.child is None:
            self.root = None
        else:
            new_root = None
            child = self.root.child
            while child is not None:
                next_sibling = child.sibling
                child.sibling = None
                new_root = self.merge(new_root, child)
                child = next_sibling
            self.root = new_root
        return min_val

heap = RankPairingHeap()
with open('heap.in', 'r') as file:
    n=int(file.readline())
    for i in range(n):
        element=int(file.readline())
        heap.insert(element)