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

2016-02-19 09:05 14 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]++;
 }
}

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;
}

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

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;
}

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

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

延伸阅读
标签: 卸妆 护肤
怎么看卸妆是否卸干净 1.在选用卸妆油的时候一定要根据自己的皮肤来选择,而且看清楚卸妆油的产品成分,最好选择植物成分的或者中药性质的。 2.选择柔软度厚度高点的卸妆棉,取适量卸妆液以铺满整块化妆棉为准,将卸妆棉对折两下,然后逐下逐下向下抹,因为向上抹会容易令污垢藏在毛孔内,阻塞毛孔,形成暗疮。另外每抹一下就要反转卸妆...
标签: 男朋友
是否关爱自己 男朋友是否关爱自己是最重要的判断标准,如果他每天都是以自我为中心,还要求你必须围着他转。从不把捧在手心中,那么无疑他的爱是要大打折扣了。一个爱你的男朋友,希望看见你开心的笑颜,听到你爽朗的笑声,感受你温暖的怀抱,抚慰你受伤的心灵。 是否真心的付出 做为爱你的男朋友,他的付出是不求物质回报的...
标签: 危害
营养物质流失     速冻食品中的蔬菜、肉馅会在加工中损失一部分营养,在运输、储藏过程中,维生素也会缓慢分解,而且,存放时间越长,这些营养素流失就越严重,因此,相比自制的新鲜食品,速冻食品的营养价值其实已经打了折扣的。 菌落总数超标     速冻食品可能因为生原料本身带菌、加工过程中细菌继续繁殖,以...
标签: 生活小常识
到底自己是不是色盲色弱,一条裙子的颜色,就能看出来吗?显然是不正确的,下面就来看看这条裙子的原图吧。 大家看能看出来这条裙子颜色吗?到底是紫黑色还是白金色我们先不评论,不然又会陷入无意义的争吵中,先来看看官方给出的色盲色弱的定义。 色盲: 先天性色觉障碍通常称为色盲,它不能分辨自然...
看外貌来判断 单身的女生一般都不会过于注重自己的外貌。因为基本上没有人会看你的外貌,女生一般打扮都是因为有自己在意的男生。如果一个女生特别的邋遢,特别不注意自己的形象,那就证明她是没有男朋友的。 从她的饮食来判断 如果你跟这个女生吃饭的时候,这个女生从来不节制自己的食欲,吃的特别特别的多。那么证明你在这...

经验教程

447

收藏

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