#警示后人#关于pair定义小根堆

P4779 【模板】单源最短路径(标准版)

Jackylin @ 2024-12-13 11:21:54

堆的完整定义需要三个参数,如果只给一个参数的话默认是大根堆,所以大多数人会用结构体来定义堆的节点并通过重载小于号来实现小根堆。

而如果想用pair来定义堆中节点的话就只能用三个参数来完整定义小根堆:

typedef pair<int, int> PII;
priority_queue<PII, vector<PII>, greater<PII>> heap;

by mayike @ 2024-12-13 11:48:07

@Jackylin 我觉得pair十分方便,因为我不会重载


by Jackylin @ 2024-12-13 15:11:10

@mayike 我也喜欢pair,代码看起来简洁一些,就是小根堆的定义稍微麻烦一点


|