标签:des c style class blog code
Time
Limit: 2000/1000 MS (Java/Others) Memory Limit:
65536/32768 K (Java/Others)
Total Submission(s):
10536 Accepted Submission(s):
4120
【题目来源】
【题目分析】
拓扑排序算法:该算法是简单而直观的,实质上属于广度优先遍历,因此称为广度优先拓扑排序算法。该算法包含下列几个步骤:
#include<iostream> #include<cstring> using namespace std; int n,m,i,j,a,b,k; //队伍数量、排名数量 int pur[520]; //存放top排序后的顺序 bool Map[520][520]; //存放有向图 int indegree[520]; //存放每个节点的入度 void topsort() { k=1; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(indegree[j]==0) { indegree[j]--; pur[k++]=j; for(int l=1;l<=n;l++) { if(Map[j][l]) indegree[l]--; } break; } if(j>=n) { cout<<"尼玛!存在环\n"<<endl; return; } } } } int main() { while((cin>>n>>m)!=NULL) { memset(indegree,0,sizeof(indegree)); memset(Map,0,sizeof(Map)); for(i=1;i<=m;i++) { cin>>a>>b; if(!Map[a][b]) //无环图中每个节点只可能有一个前驱,所以Map[][]只可能被赋值一次 { Map[a][b]=1; indegree[b]++; } } topsort(); for(i=1;i<=n;i++) if(i==1) cout<<pur[i]; else cout<<" "<<pur[i]; cout<<endl; } return 0; }
标签:des c style class blog code
原文地址:http://www.cnblogs.com/acmer-jsb/p/3755906.html