Dain

写出一个可以工作的程序并不够

统计

留言簿(3)

积分与排名

良师益友

阅读排行榜

评论排行榜

TopSort

void TopSort(vector< vector<int> > AdjacencyMatrix)
{
 queue<int> q;
 int i,j;
 int size = (int)AdjacencyMatrix.size();

 vector<int> inDegree(size,0);
 for(i = 0;i < size;++i)
 {
  for(j = 0;j < size;++j)
   if(AdjacencyMatrix[j][i] == 1)
    ++inDegree[i];
  if(inDegree[i] == 0)
   q.push(i);
 }

 int v;
 while(!q.empty())
 {
  // output
  v = q.front();
  q.pop();

  for(i = 0;i < size;++i)
  {
   if(AdjacencyMatrix[v][i] == 1)
    --inDegree[i];
   if(inDegree[i] == 0)
    q.push(i);
  }
 }

 if(!q.empty())
  cerr << "Graph has a cycle" << endl;
}

posted on 2007-04-08 15:42 Dain 阅读(202) 评论(0)  编辑 收藏 引用 所属分类: 程序


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理