拓扑排序BFS遍历的时候需要按序输出怎么办?


用自带排序的priority_queue作为容器,每遍历一次就记录queue的长度,方便遍历下一层的时候把所有元素都排空。不需要把新元素push进去,因为degree降为0的时候会在循环开头push进去的。

#include 
using namespace std;
#define N 10000
int degree[N]={0};
bool occupy[N]={false};
int points,edges;
vector>v;
void show(priority_queue,greater>q){
  // 不需要传引用,相当于用拷贝的内存换取了pop的时间
  int i;
  int times=q.size();
  int num;
  for(i=0;i>"<>&v){
    priority_queue,greater>q;
    // 利用priority_queue自带的排序功能
    int i,j;
    int counts=0;

    while(1){
      for(i=1;i的时候如果v[i]为empty
          for(j=0;jvv;
    v.push_back(vv);
  }
  int point1,point2;
  for(i=0;i

你可能感兴趣的:(拓扑排序BFS遍历的时候需要按序输出怎么办?)