- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判断一个简单图是否为平面图(c)
判断一个简单图是否为平面图(c++ )
#include iostream
#include cstdio
#include cstdlib
#include ctime
#include vector
#include list
#include queue
#include deque
#include stack
#include string
#include algorithm
#include cassert
#include cctype
using namespace std;
///图, 碎片, 环, 面以及道路的存储结构
typedef vector listint* graph;
typedef vector listint* fragment;
typedef listint circle; ///环用链表表示, 链表按顺时针记录环的点
typedef listint face; ///面用链表表示即可, 链表按顺时针记录面的点
typedef listint path;
const int MAXINT = ((unsigned)-1)1;
const int MAXPOINTCOUNT = 200;
int colour[MAXPOINTCOUNT]; ///为遍历设置的数组
const int WHITE = 0;
const int GRAY = 1;
const int BLACK = 2;
int parent[MAXPOINTCOUNT]; ///为遍历设置的数组
int depth[MAXPOINTCOUNT];
int pointKind[MAXPOINTCOUNT];
const int EMBEDED = -1;
const int AVAILABLE = 0;
bool pointEmbed[MAXPOINTCOUNT];
bool edgeEmbed[MAXPOINTCOUNT][MAXPOINTCOUNT];
int lowpoint[MAXPOINTCOUNT]; ///为找割点设置的数组
int lowneighbour[MAXPOINTCOUNT];
int pointType[MAXPOINTCOUNT];
const int NONCUTVERTEX = 0;
const int CUTVERTEX = 1;
int leave[MAXPOINTCOUNT];
int enter[MAXPOINTCOUNT];
int visitTime;
void removeBidegreePoint(graph *g) {}
void removeSingleDegreePoint(graph *g) {}
void removeParallelEdge(graph *g) {}
graph* createGraph(int pointCount)
{
graph* g = new graph;
for (int i=0; ipointCount; i++) {
g-push_back(new listint);
}
return g;
}
graph* inputGraph(void)
{
int pointCount, edgeCount, from, to;
printf(请输入顶点个数:);
cin pointCount;
printf(\n请输入边的条数: );
cin edgeCount;
graph *g = createGraph(pointCount);
cout\n请输入图的信息:endl;
for (int i=0; iedgeCount; i++)
{
cin from to;
g-at(from)-push_back(to);
g-at(to)-push_back(from);
}
return g;
}
circle* getOneCircle(const graph *g, int start)
{
int pointCount = g-size();//图的节点数
for (int i=0; ipointCount; i++)
{
colour[i] = WHITE;
}
queueint q;
q.push(start);
colour[start] = GRAY;
parent[start] = -1;
depth[start] = 0;
listint::iterator tra;
listint::iterator end;
int u,v;
///对图进
文档评论(0)