解题思路:
注意事项:样例可以通过
参考代码:
#include<iostream> #include<stack> using namespace std; #define ERROR -1 #define OK 1 #define MAX 51 int count; int TopoloicalSort(int a[MAX][MAX],int n){ stack<int>s; int indegree[n]={0}; //求各顶点的入度情况 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[i][j]!=0){ indegree[j]++; } } } for(int i=0;i<n;i++){ if(!indegree[i]){ s.push(i); } } count=0;//对输出进行计数 while(!s.empty()){ int v=s.top(); s.pop(); cout<<v<<" "; ++count; for(int i=0;i<n;i++){ if(a[v][i]!=0){ indegree[i]=indegree[i]-1; if(!indegree[i]){ s.push(i); } } } } //该有向图有回路 if(count<n) return ERROR; else return OK; } int main(int argc, char const *argv[]) { int n; int a[MAX][MAX]; cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; } } TopoloicalSort(a,n); return 0; }
0.0分
5 人评分
C语言训练-斐波纳契数列 (C语言代码)浏览:1169 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:784 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:471 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1515 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5230 |
wu-理财计划 (C++代码)浏览:833 |
WU-整除问题 (C++代码)浏览:612 |
简单的a+b (C语言代码)浏览:525 |
三角形 (C++代码)递推浏览:756 |