1 solutions
-
0
C++ :
#include<iostream> #include<cstring> using namespace std; int graph[100][100]; //邻接阵 int indegree[100]; //记录顶点的入度 int n; //n为顶点个数 int main() { memset(graph,0,sizeof(graph)); memset(indegree,0,sizeof(indegree)); cin>>n; int e; for(int i=1;i<=n;i++) { while(cin>>e) { if(e!=0) { graph[i][e]=1; indegree[e]++; continue; } else break; } } for(int i=1;i<=n;++i) //遍历n次每次找出一个顶点 { for(int j=1;j<=n;++j) //遍历所有的结点 { if(indegree[j]==0) { indegree[j]--; //该顶点的入度为-1,防止该顶点被在此遍历到,相当于删除。 cout<<j<<' '; for(int k=1;k<=n;++k) { if(graph[j][k]) indegree[k]--; //与该顶点关联的顶点的入度递减 } break; } } } //while (1); }
- 1
Information
- ID
- 18344
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By