重载符
优先队列建立小根堆方法1:
struct node { int v, w; bool operator<(const node &dd)const{ return w>dd.w; } //权值小的优先 }; priority_queue<node> q;
优先队列建立小根堆方法2:
priority_queue<int, vector<int>, greater<int> >q;
重载cmp的方法:
struct cmp { bool operator() (constNode& a, const Node &b) { return a.key > b.key; //这时是小根堆,改为小于号后为大根堆 } }
关于vector的 push_back(edge(a,b) ):
struct edge { int to,flag; edge(int _to,int _flag):to(_to),flag(_flag){} }; vector<edge> v[200005]; scanf("%d%d",&a,&b); v[a].push_back(edge(b,0));