例子
//排课算法,先修课程在前 // T = O ( |V|+|E| ) void TopSort () { for ( 图中每个顶点 V ) if ( Indegree[V] == 0 ) // 入度为零,即该课程没有先修课程 或者 先修课程已经排过 Enqueue ( V, Q ); //入队 while ( !IsEmpty(Q) ) { V = Dequeue ( Q ); //出队 输出V,或者记录V的输出序号;cnt++; for ( V 的每个邻接点 W ) if ( --Indegree[W] == 0 ) Enqueue ( W, Q ); } if ( cnt != |V| ) ERROR ( "图中有回路" ); }