#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语言训练-谁家孩子跑最慢* (C语言代码)浏览:1507 |
C语言训练-素数问题 (C语言代码)浏览:1654 |
【排队买票】 (C语言代码)浏览:899 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:691 |
WU-格式化数据输出 (C语言代码)浏览:1742 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:536 |
用筛法求之N内的素数。 (C++代码)浏览:692 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:632 |
回文数字 (C语言代码)浏览:2509 |