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