0001 template <typename Tv, typename Te> struct DfsPU { //针对DFS算法的顶点优先级更新器 0002 virtual void operator()(Graph<Tv, Te>* g, int uk, int v) { 0003 if (UNDISCOVERED == g->status(v) //对于uk每一尚未被发现的邻接顶点v 0004 && g->prio(v) > g->prio(uk) - 1){ //将其到起点距离的负数作为优先级数 0005 g->prio(v) = g->prio(uk) - 1; //更新优先级(数) 0006 g->parent(v) = uk; //更新父节点 0007 return; //注意:与BfsPU()不同,这里只要有一个邻接顶点可更新,即可立即返回 0008 } //如此效果等同于,后被发现者优先 0009 } 0010 }; //DfsPU