deleteP :: [(Key,Weight)] -> P.PriorityQueue Int
deleteP xs = foldl' (\q k -> let (_,!q') = P.delete k q in q') pq ks
  where
    !pq = createP xs P.empty
    (ks,_) = unzip xs
deleteP :: [(Key,Weight)] -> P.PriorityQueue Int
deleteP xs = foldl' (\q k -> let (_,!q') = P.delete k q in q') pq ks
  where
    !pq = createP xs P.empty
    (ks,_) = unzip xs
deleteP xs = foldl' (\q k -> let (_,!q') = P.delete k q in q') pq ks
  where
    !pq = createP xs P.empty
    (ks,_) = unzip xs