本文整理汇总了C++中graph::point方法的典型用法代码示例。如果您正苦于以下问题:C++ graph::point方法的具体用法?C++ graph::point怎么用?C++ graph::point使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类graph
的用法示例。
在下文中一共展示了graph::point方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findCities
void findCities(graph<int>& g, LList<int>& cities, int cityId, int p){
elem_link1<int>* start = g.point(cityId);
int dist[100]; // 100???
bool visited[100]; // 100??? - nikoi ne garantira, che id-tata na cities shte sa posledovatelni chisla pod 100
memset(dist, -1, 100);
memset(visited, 0, 100);
if (start){
visited[start->inf] = true;
dist[start->inf] = 0;
queue<int> q;
q.push(start->inf);
while (!q.empty()){
int current = q.front();
q.pop();
elem_link1<int>* p = g.point(current);
p = p->link;
while (p){
if (!visited[p->inf]){
visited[p->inf] = true;
dist[p->inf] = dist[current] + 1;
q.push(p->inf);
}
p = p->link;
}
}
for (int i = 0; i < 100; i++){
if (dist[i] >= 0 && dist[i] <= p){
cities.toEnd(i);
}
}
}
}
示例2: path
void path(town start, graph<town>& g, int p, LList<town> &visited){
if (g.empty())return;
int count = 0;
queue<town> q;
q.push(start);
visited.toEnd(start);
elem_link1<town> * f = g.point(start);
f = f->link;
while (!q.empty()){
town t;
q.pop(t);
while (f){
if (p == count)return;
else if (!member(visited, f->inf)){
q.push(f->inf);
visited.toEnd(f->inf);
count++;
}
f = f->link;
}
}
}
示例3: neighbours
LList<T> neighbours(graph<T> g, T e) {
if (!g.top(e)) {
return LList<T>();
}
elem<T> * glist = g.point(e);
LList<T> neighbours;
while (glist->link != NULL) {
neighbours.ToEnd(glist->link->inf);
glist = glist->link;
}
return neighbours;
}
示例4: townLessThan
LList<int> townLessThan(int start, graph<int> towns, LList<int> &visited, int p)
{
LList<int> vert = towns.vertexes();
int n = vert.length();
//masiv, v koito shte pazim razstoianiata ot s da vs dr grad
int dist[100]; // Защо 100?
//inicializirame s -1 (ako niama put si ostava)
for (int i = 0; i < n; i++)
{
dist[i] = -1;
}
//BFS
queue<int> q;
visited.toEnd(start);
dist[start] = 0;
q.push(start);
while (!q.empty())
{
int x;
q.pop(x);
elem_link1<int> * p = towns.point(x);
p = p->link;
while (p)
{
if (!member(p->inf, visited))
{
visited.toEnd(p->inf);
q.push(p->inf);
dist[x] += 1; // vsichki stoinosti shte badat 0!
}
p = p->link;
}
}
//v masiva dist imame razstoianiata ot start do vs gradove
LList<int> result;
for (int i = 0; i < n; i++)
{
if (dist[i] <= p && dist[i] != -1)
result.toEnd(i);
}
return result;
}
示例5: notFurtherThan
void notFurtherThan(int& dist, int& start, graph<int>& g, LList<int>& visited, LList<int>& cities)
{
if (contains(visited, cities)) return; // ??? should be contains(visited, start)
if (dist < 0) return;
if (!g.top(start)) return;
visited.ToEnd(start);
cities.ToEnd(start);
elem<int>* q = g.point(start);
q = q->link;
while (q)
{
int distance = dist - 1;
notFurtherThan(distance, q->inf, g, visited, cities);
q = q->link;
}
}