我不去那


私信TA

用户名:15635676630

访问量:8796

签 名:

LOSER

等  级
排  名 768
经  验 3770
参赛次数 1
文章发表 17
年  龄 22
在职情况 学生
学  校 河北师范大学
专  业 计算机科学与技术

  自我简介:

还有什么借口

#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 人评分

  评论区

  • «
  • »