确定比赛名次 HDU - 1285【拓扑排序】

拓扑排序的思路,

输出格式:在出队列q的时候稍微改一下,因为对输出格式有要求,出队时输出,同时计数number,如果number=0说明到最后一个了,此时不输出空格

符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前:把队列换成优先队列,且是小顶堆,这时候要注意头文件的添加include,没加在oj提交的时候一直报编译错误

#include
#include
#include
#include
#include
#include   //使用priority_queue,greater> q时添加,要不然会报编译错误 
using namespace std;

const int MAXN=501;
vector graph[MAXN];
int inDegree[MAXN];

queue res;
bool TopologicalSort(int n) {
	priority_queue,greater> q;
	int number=0;
	for(int i=1; i<=n; i++) {
		if(inDegree[i]==0) {
			q.push(i);
		}
	}
	while(!q.empty()) {
		int u=q.top();
		printf("%d",u);
		q.pop();
		number++;
		if(n!=number){
			printf(" ");
		} 
		for(int i=0; i

 

你可能感兴趣的:(考研机试题)