1 条题解
-
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
信息
- ID
- 1917
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者