Grafo com dicionário
Grafos estão por toda parte: redes sociais, rotas de navegação, dependências de pacotes. Na prática, você precisa adicionar arestas entre nós sem saber quais já existem. Dominar a representação com dicionário de listas permite montar qualquer grafo dinamicamente – um passo essencial antes de implementar busca em largura ou caminho mínimo.
O PROBLEMA
Represente grafo com dicionário de listas de adjacência.
EXEMPLO
grafo["A"]=["B","C"]
sao_vizinhos("A","B") → TrueSOBRE O CONCEITO
A estrutura é um dicionário onde cada chave é um nó e o valor é uma lista de seus vizinhos. Para adicionar a aresta "A"-"B", você faz grafo["A"].append("B"). O erro mais comum é tentar adicionar sem antes garantir que o nó existe: se grafo.get("A") retorna None, o append quebra. Por isso, use if "A" not in grafo: grafo["A"] = [] antes de append. Com isso, a função sao_vizinhos verifica com "B" in grafo.get("A", []).
RESOLUÇÃO