一个裸地top排序,我是用宽搜做的。
#include<stdio.h>
long dui[101];
long son[101][101];
long f[101],bj[101];
long i,j,n,head,last,x;
void ind(long i)
{
if (bj[i]==1)
return;
f[i]--;
if (f[i]==0)
{
last++;
dui[last]=i;
bj[i]=1;
}
}
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&j);
while (j!=0)
{
son[i][0]++;
son[i][son[i][0]]=j;
f[j]++;
scanf("%d",&j);
}
}
head=0;
for (i=1;i<=n;i++)
{
if (f[i]==0)
{
f[i]=1;
ind(i);
}
}
while (head<last)
{
head++;
x=dui[head];
for (i=1;i<=son[x][0];i++)
ind(son[x][i]);
}
for (i=1;i<=last;i++)
printf("%d ",dui[i]);
}
posted on 2011-07-05 22:16
梦转千寻 阅读(45)
评论(0) 编辑 收藏 引用