第一道拓扑排序题,非常水的,就是最基础的实现算法就行。
代码如下:
#include<iostream>
using namespace std;
const int MAXN = 105;
int edge[MAXN][MAXN];
int find_vetex(int T)
{
int buff;
for(int i=1;i!=T+1;i++)
{
if(edge[i][0]==0)
{
buff=i;
break;
}
}
for(int i=1;i!=T+1;i++)
{
if(edge[buff][i] == true)
edge[i][0]--;
}
edge[buff][0]--;
return buff;
}
int main()
{
int T;
cin>>T;
memset(edge,0,sizeof(edge));
for(int i=1;i!=T+1;i++)
{
int num;
while(cin>>num&&num!=0)
{
if(edge[i][num]!=1)
{
edge[i][num] = 1;
edge[num][0]++;
}
}
}
cout<<find_vetex(T);
for(int i=2;i!=T+1;i++)
cout<<" "<<find_vetex(T);
cout<<endl;
system("pause");
return 0;
}