Изменения

Перейти к: навигация, поиск

Алгоритмы на деревьях

696 байт убрано, 19:01, 11 декабря 2013
Нет описания правки
Реализация:
int diameter(graph g) {
 
bfs(int v) - заполняет массив d[n] расстояниями до всех вершин.
 
v = u = w = 0;
 
bfs(v);
 
for(i = 0; i < n; i++)
 
if (d[i] > d[u])
 
u = i;
 
bfs(u);
 
for(i = 0; i < n; i++)
 
if (d[i] > d[w])
 
w = i;
 
return d[w];
void diameter(graph g)
v = u = w = 0;
bfs(v);
dfs for(vi = 0; i < n; i++) if (d[i] > d[u]) u = i; bfs(u); for(i = 0; i < n; i++) if (d[i] > d[w]) w = i; return d[w];
}
int main()
{
... //задание графа G с количеством вершин n.
visited.assign(n, false); //в начале все вершины в графе ''не пройденные''
for (int i = 0; i < n; ++i) //проходим по всем вершинам графа...
if (!visited[i]) //...не забыв проверить, были мы уже в очередной вершине или нет
dfs(i);
return 0;
}
Анонимный участник

Навигация