Вы можете определить функтор сравнения с конструктором, требующим состояния:
struct Compare
{
State state;
Compare(State state)
: state(state)
{
}
bool operator()(const Item& a, const Item& b)
{
... // use state
}
};
и передать его экземпляр, созданный с требуемым состоянием, в priority_queue конструктор :
priority_queue<Item, std::vector<Item>, Compare> queue(Compare(state));