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

当代的傻瓜张雨

当代的傻瓜张雨

2016-02-19 09:05

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

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

代码如下:

#includeiostream
#includelist
#includestack
using namespace std;

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

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

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
判断给定的图是不是有向无环图实例代码

如何判断孩子是不是肺炎

电脑网络
如何判断孩子是不是肺炎

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

怎么判断男生是不是单身

单身
怎么判断男生是不是单身

如何判断宝宝是不是天才?

电脑网络
如何判断宝宝是不是天才?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何判断是不是好酱油 酱油有哪些好处

酱油
如何判断是不是好酱油 酱油有哪些好处

如何判断你们是不是真心相爱?

情感
如何判断你们是不是真心相爱?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

IOS实现手动截图并保存

IOS实现手动截图并保存

一张纸微缩打印多个PowerPoint内容

一张纸微缩打印多个PowerPoint内容
下拉加载更多内容 ↓