posts - 0,comments - 0,trackbacks - 0
一个裸地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)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理