Para efeitos da nota atribuida à resolução de exercícios ao longo do semestre - Submeter até 23:59 de 1 de Junho
(o problema continuará depois disponível para submissão, mas sem contar para a nota)
[para perceber o contexto do problema deve ler o guião da aula #10]
Na antiga civilização romana existiam N cidades e M estradas bidirecionais que as ligavam. À medida que o tempo passou algumas estradas ficaram inutilizáveis, e ninguém as reparou.
Como um estudioso da civilização romana, queres agora fazer um pequeno estudo. Com esse propósito em mente, queres escrever um programa capaz de processar os seguintes tipos de operações:
Chamemos a um subconjunto de cidades uma região se for possível viajar entre qualquer par de cidades do subconjunto usando as estradas ainda usáveis, possivelmente via algumas cidades intermédias do subconjunto. A população de uma região é a soma das populações das regiões que a constituem.
Recebendo como input o sistema inicial de estradas, a população inicial de cada cidade e Q operações de um dos dois tipos anteriores, a tua tarefa é saber o tamanho da região mais populada depois de cada operação.
A primeira linha contém três inteiros N M Q, indicando respetivamente o número N de cidades, o número M de estradas e o número Q de operações.
Segue-se uma linha com N inteiros, o i-ésimo dos quais indicando a população inicial da i-ésima cidade.
As M linhas seguintes indicam as estradas existentes no formato X Y indicando que existe uma estrada bidirecional entre as cidades X e Y. No início todas as estradas são usáveis.
As Q linhas seguintes indicam as operações a considerar no formato descrito anteriormente. É garantido que a mesma estrada nunca é indicada como inutilizável duas vezes
O output deve ser constituído por Q linhas, uma por cada operação. Na i-ésima linha deve vir a população total da região mais populada depois de feitas as primeiras i operações.
São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:
1 ≤ N ≤ 100 000 | Quantidade de cidades | |
1 ≤ M ≤ 100 000 | Quantidade de estradas | |
1 ≤ Q ≤ 100 000 | Quantidade de operações | |
1 ≤ P ≤ 10 000 | População de uma cidade |
3 3 6 1 2 3 1 2 2 3 3 1 P 1 3 D 1 P 2 3 D 2 P 3 10 D 3
8 8 9 6 13 10
Desenho e Análise de Algoritmos (CC2001)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto