#题解
2025-07-24 11:16:28
发布于:浙江
16阅读
0回复
0点赞
topo sort
但是。他和我们使用的queue不一样。
因为题目要求我们要把编号小的队伍排在前面。所以
我们使用的数据结构是优先队列
#include <bits/stdc++.h>
using namespace std;
int n,m,ind[100005];
int main(){
vector<int> a[100005];
vector<int> res;
cin >> n >> m;
for (int i=0;i<m;i++){
int u,v;
cin >> u >> v;
a[u].push_back(v);
ind[v]++;
}
priority_queue<int,vector<int>,greater<int> > q;
for (int i=1;i<=n;i++){
if(ind[i]==0) q.push(i);
}
while (!q.empty()){
int now=q.top();
q.pop();
res.push_back(now);
for (int i=0;i<a[now].size();i++) {
int next = a[now][i];
ind[next]--;
if (ind[next]==0) q.push(next);
}
}
for (int i=0;i<n;i++){
cout << res[i] << ' ';
}
return 0;
}
↑
这里空空如也
有帮助,赞一个