#include<iostream> #include<stack> using namespace std; int n,topo[100]={0},indegree[100]={0},a[100][100]; void FindInDegree() { for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(a[i][j]) indegree[j]++; } bool TopoSort() { FindInDegree(); stack<int> s; int m=0; for(int i=0;i<n;i++) if(indegree[i]==0) s.push(i); while(!s.empty()) { int i=s.top(); topo[m++]=i; s.pop(); for(int j=0;j<n;j++) if(a[i][j]==1) { indegree[j]--; if(indegree[j]==0) s.push(j); } } if(m<n) return false; else return true; } int main() { cin>>n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; if(!TopoSort()) cout<<"ERROR"; else for(int i=0;i<n;i++) cout<<topo[i]<<" "; cout<<endl; return 0; }
0.0分
2 人评分
【偶数求和】 (C语言代码)浏览:588 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:716 |
愚蠢的摄影师 (C++代码)浏览:980 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1100 |
Tom数 (C语言代码)浏览:598 |
C二级辅导-统计字符 (C语言代码)浏览:695 |
众数问题 (C语言代码)浏览:717 |
筛排处理 (C语言代码)浏览:830 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:594 |