Interface:
DynamicForest(n): cria e devolve uma floresta com n vértices e nenhuma aresta Connected(F,u,v): true se u e v estão na mesma componente da floresta e false caso contrário Link(F,u,v): insere a aresta uv na floresta Cut(F,u,v): remove a aresta entre u e v Print(): imprime todas as arestas da floresta.
Codificação das operações:
1 <n> significa DynamicForest(n) 2 <u> <v> significa println(Connected(F,u,v)) 3 <u> <v> significa Link(F,u,v) 4 <u> <v> significa Cut(F,u,v) 5 significa Print(): imprime todas as arestas da floresta.Exemplo de entrada para o programa de testes:
1 10 3 1 2 3 2 3 3 3 4 3 4 5 3 5 6 3 7 8 3 7 9 3 7 10 5 2 1 6 2 2 5 2 3 8 2 9 10 2 7 5 4 3 4 2 1 6 2 3 4 3 1 6 2 3 4 4 7 10 2 1 10 2 8 10 3 4 10 2 1 10 2 8 10 5Saída esperada para este teste:
A lista de arestas das floresta pode sair em uma ordem distinta da apresentada abaixo, porém cada aresta u v deve ser impressa com u < v, com um espaço entre o u e o v, e entre duas arestas, dois espaços.
1 2 2 3 3 4 4 5 5 6 7 8 7 9 7 10 True True False True False False False True False False True False 1 2 2 3 4 5 5 6 1 6 4 10 7 8 7 9