B3644 家谱树
对于第
建立有向边
这样,所有
如果存在边
输出这张图的一个拓扑序即可。
queue <int> Q;
void toposort() {
for(int i = 1; i <= n; i++) {
if(deg[i] == 0) {
printf("%d ", i);
Q.push(i);
}
}
while(Q.size()) {
int x = Q.front(); Q.pop();
for(int i = Head[x]; i; i = Next[i]) {
deg[to[i]]--;
if(deg[to[i]] == 0) {
printf("%d ", to[i]);
Q.push(to[i]);
}
}
}
}