输出字典序最小的拓扑排序

#include
#include
#include
#include
#include
#include
#define N 10001
using namespace std;
int n,m;
int in[N];//节点入度
int path[N];//存储路径
vector G[N];//G[i]表示i节点所指向的所有其他点
void Topsort()//拓扑排序
{
    priority_queue< int,vector,greater > Q;//最小值先出列
    int cnt=0;//记录可拆解的点数目
    for(int i=1;i<=n;i++)//枚举编号从1到n的点
        if(in[i]==0)//入度为0,入列
            Q.push(i);
 
    while(!Q.empty()) {
        int x=Q.top();//队列首元素
        Q.pop();
 
        path[++cnt]=x;//存储可拆点
        for(int i=0;i

 

你可能感兴趣的:(拓扑排序)