拓扑排序+代码
拓撲排序
在一個有向無環圖中,對所有的節點進行排序,要求沒有一個節點指向它前面的節點。
思想:
1->3->4->6->2->5(不唯一)
?
?
C++代碼:
#include <bits/stdc++.h> #define N 105 using namespace std;int main() {vector <int> m[N];queue <int> q;//有些拓撲排序要求字典序最小什么的,那就把隊列換成優先隊列就好了。//priority_queue<int,vector<int>,greater<int> >q;vector <int> ans;int in[N];memset(in,0,sizeof(in));int v,e;cin>>v>>e;for(int i=0;i<e;i++){int a,b;cin>>a>>b;m[a].push_back(b);}for(int i=1;i<=v;i++){for(int j=0;j<m[i].size();j++){in[m[i][j]]++;}}for(int i=1;i<=v;i++)if(in[i]==0) q.push(i);while(!q.empty()){int p=q.front();q.pop();ans.push_back(p);for(int i=0;i<m[p].size();i++){int y=m[p][i];in[y]--;if(in[y]==0)q.push(y);}}if(ans.size()==v){for(int i=0;i<ans.size();i++)printf( "%d ",ans[i] );printf("\n");}else printf("No Answer!\n"); }?
轉載于:https://www.cnblogs.com/LMIx/p/10730614.html
總結
- 上一篇: 异常解决——Spring Cloud F
- 下一篇: Robotframework与unitt