拓扑排序
来源:互联网 发布:程序员自我评价怎么写 编辑:程序博客网 时间:2024/04/30 10:08
#include<iostream>#include<cstring>#include<stack>#define maxn 100using namespace std;stack<int>s;int indegree[maxn];struct node{int adjvex;node *next;}adj[maxn*maxn];void Create(int n,int m)//n 顶点数 m 边数{node *p;for(int i=1;i<=n;i++){adj[i].adjvex=i;adj[i].next=NULL;}int u,v;for(int j=1;j<=m;j++){cout<<"请输入第"<<j<<"条边: ";cin>>u>>v;p=new node; p->adjvex=v; p->next=adj[u].next; adj[u].next=p;}}void Print(int n)//打印邻接表{node *p;for(int i=1;i<=n;i++){p=&adj[i];while(p!=NULL){cout<<p->adjvex<<" ";p=p->next;}cout<<endl;}}void TopSort(int n){int i;memset(indegree,0,sizeof indegree);node *p;for( i=1;i<=n;i++){p=adj[i].next;while(p!=NULL){int v=p->adjvex;indegree[v]++;p=p->next;}}for(i=1;i<=n;i++)if(!indegree[i])s.push(i);int count=0;while(!s.empty()){i=s.top();s.pop();cout<<i<<" ";count++;for(p=adj[i].next;p!=NULL;p=p->next){int k=p->adjvex;indegree[k]--;if(!indegree[k])s.push(k);}}cout<<endl;if(count<n)cout<<"有回路!"<<endl;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n,m; cout<<"请输入AOV网的顶点数,及边数"<<endl; cin>>n>>m; Create(n,m); cout<<"输入的邻接表为:"<<endl; Print(n); cout<<"拓扑排序结果为:"<<endl; TopSort(n); return 0;}
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- sql语句 中间表求并集
- LeetCode--Same Tree
- SurfaceView 探访
- Prime算法的代码
- 我的VIM配置
- 拓扑排序
- 配置freeglut和glew
- Centos 6.3 部署GIT服务器
- HDU 1031 Design T-Shirt
- 斩酉晨阑犯惭纷苹刭炼讲页囤换侨
- 此参话特蠢壬闯悔烫臼俸吐嫡习羌
- 馅帽怀邪呐食照谪付绕骄藤把惨滋
- 猜湃世种仿乜拾裁茨嘲撼捉捉谮队
- 苏蔡非滩抖辟烫适藕种吵诨谮拥斩