本文整理汇总了C++中graph::unVisit方法的典型用法代码示例。如果您正苦于以下问题:C++ graph::unVisit方法的具体用法?C++ graph::unVisit怎么用?C++ graph::unVisit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类graph
的用法示例。
在下文中一共展示了graph::unVisit方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isCyclic
bool isCyclic(graph &g)
// Returns true if the graph g contains a cycle. Otherwise, returns false.
{
queue<int> que;
int id=0,count=1;
bool first=true;
vector<int> parentCount(g.numNodes(),-1);
que.push(id);
g.visit(id);
while(count<g.numNodes() || !que.empty())
{
if (que.empty())
{
id=count;
que.push(id);
g.visit(id);
count++;
}
else
id=que.front();
for(int i=0;i<g.numNodes();i++)
{
if (g.isEdge(id,i) && i!=que.front())
{
if(!g.isVisited(i))
{
g.visit(i);
que.push(i);
count++;
parentCount[i]=id;
}
else if(parentCount[id]==i)
continue;
else
{
for (int z=0;z<g.numNodes();z++)
g.unVisit(z);
return true;
}
}
}
que.pop();
}
for (int z=0;z<g.numNodes();z++)
g.unVisit(z);
return false;
}
示例2: isConnected
bool isConnected(graph &g)
// Returns true if the graph g is connected. Otherwise returns false.
{
queue<int> que;
int id=0,count=1;
que.push(id);
g.visit(id);
while(count<g.numNodes() && !que.empty())
{
id=que.front();
for(int i=0;i<g.numNodes();i++)
{
if (g.isEdge(id,i) && !g.isVisited(i))
{
g.visit(i);
que.push(i);
count++;
}
}
que.pop();
}
for (int z=0;z<g.numNodes();z++)
g.unVisit(z);
if(count==g.numNodes())
return true;
else return false;
}
示例3: findSpanningForest
void findSpanningForest(graph &g, graph &sf)
// Create a graph sf that contains a spanning forest on the graph g.
{
queue<int> que;
int id=0,count=1;
bool first=true;
vector<int> parentCount(g.numNodes(),-1);
que.push(id);
g.visit(id);
while(count<g.numNodes() || !que.empty())
{
if (que.empty())
{
id=count;
que.push(id);
g.visit(id);
count++;
}
else
id=que.front();
for(int i=0;i<g.numNodes();i++)
{
if (g.isEdge(id,i) && i!=que.front())
{
if(!g.isVisited(i) && parentCount[id]!=i)
{
g.visit(i);
sf.addEdge(id,i,g.getEdgeWeight(i,id));
sf.addEdge(i,id,g.getEdgeWeight(i,id));
que.push(i);
count++;
parentCount[id]++;
}
}
}
que.pop();
}
for (int z=0;z<g.numNodes();z++)
g.unVisit(z);
}