Top sort 双队列
#include<iostream> #include<vector> #include<queue> using namespace std; int num[100]; int main() { queue<int>q; queue<int>ans; int n,m; cin>>n>>m; int x,y; vector<int>u[100]; for(int i=1;i<=m;i++){ cin>>x>>y; u[x].push_back(y); num[y]++; } for(int i=0;i<n;i++){ if(num[i]==0){q.push(i);} } while(!q.empty()){ int k=q.front();q.pop();ans.push(k); for(int i=0;i<u[k].size();i++){ num[u[k][i]]--; if(num[u[k][i]]==0){q.push(u[k][i]);} } } while(!ans.empty()){ cout<<ans.front()<<endl; ans.pop(); } }
如需转载,请注明出处
如有侵权,联系删除
2290713181@qq.com
如有侵权,联系删除
2290713181@qq.com