/*1034.Forest(求传递闭包判断回路,判断是否为森林,存在入度超过1或有回路的不成森林)
*/
#include <iostream>
#include <stdlib.h>
#include <memory.h>
#include <vector>
using namespace std;
struct Node
{
vector<int> adj;
}node[101];
int n, m;
int inDegree[101];
int matrix[101][101];
int width[101];
int treeLevel;
int forestLevel;
inline void DFS(int k, int level)
{
//统计每一层的节点数
width[level]++;
//判断树的深度是否比森林深度大,若是更新森林深度
if(treeLevel < level)
treeLevel = level;
for(int i=0; i< node[k].adj.size(); i++)
{
DFS(node[k].adj[i], level+1);
}
}
inline bool isForest()
{
for(int i=1; i<=n; i++)
if(inDegree[i] > 1)
return false;
//求出图的传递闭包
// 例如 i->k,i可以到达k,则就在i列中,找出可以到达i的j,扫描k列所有行即可
for(int i=1; i<=n; i++)
for(int k=1; k<=n; k+&
1034.Forest(判断是否为森林,存在入度超过1或有回路的不成森林)
最新推荐文章于 2020-10-10 20:11:17 发布