广度优先生成森林的思路和深度优先生成森林的思路相同,在此不再复述,请看上一篇。#include<iostream>
#include<fstream>
#include<vector>
#include<time.h>
#include<algorithm>
#include<queue>
using namespace std;
struct CSTree
{
int data;
CSTree * lchild;
CSTree * nextsibling;
};
void BFSTree(int v,CSTree *&p);
void BFSForest(CSTree *&root);
CSTree *root = NULL;//生成森林
bool *visited;
vector<vector<int>> mGraph;//图结构
int nodeNum;//图中顶点数
int edgeNum;//图中边数
void readGraph()
{
fstream fin("E:\\myData\\facebook_combined.txt");//打开文件
fin>>nodeNum>>edgeNum;//读取顶点数和边数
mGraph.resize(nodeNum);//设置图的大小
visited = new bool[nodeNum];
for(int i = 0; i < nodeNum; ++i)
{
visited[i] = false;
}
int num1, num2;
while(fin>>num1>>num2)//读取每一条边
{
mGraph[num1].push_back(num2);//存储边的信息
mGraph[num2].push_back(num1);
}
fin.close();//关闭文