判断给定的图是不是有向无环图实例代码

2016-02-19 09:05 10 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐判断给定的图是不是有向无环图实例代码,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

代码如下:

#includeiostream
#includelist
#includestack
using namespace std;

class Graph {
 int vertexNum;
 listint *adjacents;
public:
 Graph(int _vertexNum) {
  vertexNum = _vertexNum;
  adjacents = new listint[vertexNum];
 }
 void findIndegree(int *indegree, int n);
 bool topologicalSort();
 void addEdge(int v, int w);
};

void Graph::addEdge(int v, int w) {
 adjacents[v].push_back(w);
}

void Graph::findIndegree(int *indegree, int n) {
 int v;
 listint::iterator iter;
 for(v = 0; v vertexNum; v++) {
  for (iter = adjacents[v].begin(); iter != adjacents[v].end(); iter++)
   indegree[*iter]++;
 }
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

bool Graph::topologicalSort() {
 int ver_count = 0;
 stackint m_stack;
 int *indegree = new int[vertexNum];
 memset(indegree, 0, sizeof(int) * vertexNum);
 findIndegree(indegree, vertexNum);
 int v;
 for (v = 0; v vertexNum; v++)
  if (0 == indegree[v])
   m_stack.push(v);
 while (!m_stack.empty()) {
  v = m_stack.top();
  m_stack.pop();
  cout v " ";
  ver_count++;
  for (listint::iterator iter = adjacents[v].begin(); iter != adjacents[v].end(); iter++) {
   if (0 == --indegree[*iter])
    m_stack.push(*iter);
  }
 }
 cout endl;
 if (ver_count vertexNum)
  return false;
 return true;
}

int main(int argc, char *argv[]) {
 Graph g(6);
 g.addEdge(5, 2);
    g.addEdge(5, 0);
    g.addEdge(4, 0);
    g.addEdge(4, 1);
    g.addEdge(2, 3);
    g.addEdge(3, 1);
 if (g.topologicalSort())
  cout "it is a topological graph" endl;
 else
  cout "it is not a topological graph" endl;
 cin.get();
 return 0;
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1589487.html

延伸阅读
标签: 男朋友
是否关爱自己 男朋友是否关爱自己是最重要的判断标准,如果他每天都是以自我为中心,还要求你必须围着他转。从不把捧在手心中,那么无疑他的爱是要大打折扣了。一个爱你的男朋友,希望看见你开心的笑颜,听到你爽朗的笑声,感受你温暖的怀抱,抚慰你受伤的心灵。 是否真心的付出 做为爱你的男朋友,他的付出是不求物质回报的...
标签: 婴儿色盲
出生时人的视觉 刚出生的宝宝都是不能区分颜色的,他们的眼睛的视网膜和视锥细胞,还没有发育到能让他们辨别出各种颜色。人体辨别颜色的视锥细胞有三种,一是红色,二是绿色,三是蓝色。能看见低亮度的光线是因为视网膜在帮助我们。刚出生的宝宝,视锥细胞还没完全发育,就不能一起发挥作用,所以宝宝一开始是辨别不出很多颜色的。一个...
标签: 危害
营养物质流失     速冻食品中的蔬菜、肉馅会在加工中损失一部分营养,在运输、储藏过程中,维生素也会缓慢分解,而且,存放时间越长,这些营养素流失就越严重,因此,相比自制的新鲜食品,速冻食品的营养价值其实已经打了折扣的。 菌落总数超标     速冻食品可能因为生原料本身带菌、加工过程中细菌继续繁殖,以...
看外貌来判断 单身的女生一般都不会过于注重自己的外貌。因为基本上没有人会看你的外貌,女生一般打扮都是因为有自己在意的男生。如果一个女生特别的邋遢,特别不注意自己的形象,那就证明她是没有男朋友的。 从她的饮食来判断 如果你跟这个女生吃饭的时候,这个女生从来不节制自己的食欲,吃的特别特别的多。那么证明你在这...
看表面来判别 独身的女生一般都不会过于重视自己的表面。由于基本上没有人会看你的表面,女生一般装扮都是由于有自己介意的男生。如果一个女生特别的肮脏,特别不注意自己的形象,那就证明她是没有男朋友的。女生总是很在乎自己在喜欢人面前的外表的,所以一般那种邋邋遢遢的女孩大多是没有喜欢的人,也没有男朋友的,这种女孩你可以放...

经验教程

103

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部