本文共 578 字,大约阅读时间需要 1 分钟。
题意:
有n个人,让你给排个序,其中有一些规则,首先要满足对于序对<a,b>,a要在b的前面输出,对于没有标定次序的序号,要满足,越小的序号,越先输出越好;
思路:反向拓扑排序+优先队列
对于给定的序列<a,b>,让a的度数加一,这样一定可以保证满足上面两个规则,最后输出的时候倒序输出,因为最后应该数,肯定是按照这样的度数为0 的点。
代码如下:
#include#include #include #include #include using namespace std;const int maxn=200000+20;vector G[maxn];int ans[maxn];int indegree[maxn];priority_queue p;int vis[maxn];void bfs(int x){ for(int i=0; i =0; i--) { if(i==cnt-1) printf("%d",ans[i]); else printf(" %d",ans[i]); } printf("\n"); return 0;}
转载地址:http://hygsi.baihongyu.com/