#A8. 拓扑排序-填空
拓扑排序-填空
int n,m;
vector a[110];
queue q;
int in[110];
void topsort() {
for (int i = 1; i <= n; i++) {
if ({{ input(1) }}) { // 填空:判断入度是否为0
q.push(i);
}
}
while (!q.empty()) {
int v = q.front();
cout << v << " ";
q.pop();
int l = a[v].size();
for (int i = 0; i < l; i++) {
int to = a[v][i];
in[to]{{ input(2) }}; // 填空:入度减1操作
if ({{ input(3) }}) { // 填空:判断入度是否为0
q.push(to);
}
}
}
}
int main() {
while (1) {
cin >> n >> m;
if (n == 0 && m == 0) return 0;
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
a[x].push_back(y);
in[y]{{ input(4) }}; // 填空:入度加1操作
}
topsort();
cout << endl;
memset(in, 0, sizeof(in));
while (!q.empty()) {
q.pop(); // 清空队列
}
for (int i = 1; i <= n; i++) {
a[i].clear();
} // 清空邻接表
}
return 0;
}