Rede de telecomunicações
Esse problema é uma aplicação direta do algoritmo apresentado em: http://bit.ly/grapharticulation
Alguns pontos que são necessários prestar atenção:
- Lembre-se que ao adicionar uma aresta, como é um grafo bidirecional, a aresta deve ser adicionada na outra ponta da sua lista de adjacências. Por exemplo, se houver uma entrada:
1 5
Significa que você deve criar uma aresta de 1 para 5 e também de 5 para 1.
- Lembre do caso especial, quando é root. Ele vai ser root sempre quando você chamar na main(). Por exemplo, na minha main() tem:
for (int u=0; u< places; ++u)
{
if (color[u]==WHITE)
{
dfs(u);
}
}
Logo, se ele entrar no dfs, o valor de u será o root daquela invocação.
Exemplo de grafo para você testar: