I've seen people using negative edges when creating a priority queue because writing a minimum is simply too tedious. And, I gotta say, I agree with them! Look at this code when you have to declare a min heap for a pair of ints:
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> q;
That simply is too much to write! However, there is a simple solution. Just include this somewhere near the top of your code:
template<typename T> using min_heap = priority_queue<T, vector<T>, greater<T>>;
Now you can declare a min heap of pairs of ints by writing:
min_heap<pair<int, int>> q;
To me, that is more clear and concise, and less to type! Are there any other reasons that some people might create a min heap by negating edge weights instead of writing that block of code at the top?