QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 100

#24341. Vírus

Statistiques

Uma das tarefas mais importantes da informática moderna é a modelação de processos biológicos. Recentemente, os biólogos descobriram $n$ vírus, atribuindo a cada um um código único de $1$ a $n$. Um vírus pode integrar-se nas células de outros organismos. Inicialmente, os cientistas dispõem de $n$ células, numeradas de $1$ a $n$, e a célula de número $i$ está infetada pelo vírus $i$. Cada célula só pode estar infetada por um vírus.

Determinou-se o nível de suscetibilidade de cada célula a cada vírus. Mais precisamente, para cada célula conhece-se o vírus ao qual é mais suscetível, o vírus ao qual é mais suscetível entre os restantes, e assim sucessivamente.

As células infetadas por vírus atacam-se umas às outras. Suponha que a célula de número $i$ está atualmente infetada pelo vírus $a$ e ataca a célula de número $j$, infetada pelo vírus $b$. Se a célula $j$ for mais suscetível ao vírus $a$ do que ao vírus $b$, a célula $j$ passa a estar infetada pelo vírus $a$.

Na experiência, os cientistas colocam todas as $n$ células num ambiente fechado, onde elas podem atacar-se de qualquer maneira. A experiência termina quando nenhum ataque deste tipo pode alterar o vírus que infeta qualquer célula.

Os cientistas dizem que o vírus $i$ é estável se, para qualquer sequência de ataques entre células que leve ao fim da experiência, permanecer pelo menos uma célula infetada pelo vírus $i$.

Os cientistas dizem que o vírus $i$ é viável se existir uma sequência de ataques entre células que leve ao fim da experiência e após a qual permaneça pelo menos uma célula infetada pelo vírus $i$.

Por exemplo, suponha que existem dois vírus, que a célula 1 é mais suscetível ao vírus 1 e que a célula 2 é mais suscetível ao vírus 2. A experiência termina imediatamente: nenhum ataque altera o vírus que infeta uma célula. Assim, ambos os vírus são estáveis e viáveis.

Suponha agora que existem dois vírus, mas a célula 1 é mais suscetível ao vírus 2 e a célula 2 ao vírus 1. A experiência termina após qualquer ataque de uma célula à outra. Existem dois cenários possíveis. No primeiro, a célula 1 ataca a célula 2, e ambas ficam infetadas pelo vírus 1. No segundo, a célula 2 ataca a célula 1, e ambas ficam infetadas pelo vírus 2. Assim, nenhum vírus é estável, mas ambos são viáveis.

Finalmente, suponha que existem dois vírus e que ambas as células são mais suscetíveis ao vírus 1. O ataque da célula 2 à célula 1 não altera o vírus que a infeta, enquanto, se a célula 1 atacar a célula 2, a segunda célula fica infetada pelo vírus 1. Portanto, a experiência terminará após o ataque da célula 2 à célula 1; o vírus 1 é estável e viável, enquanto o vírus 2 não possui nenhuma destas propriedades.

Os cientistas precisam de responder a dois tipos de perguntas: quais os vírus estáveis e quais os vírus viáveis.

Escreva um programa que, dadas as descrições das células e o tipo de pergunta, determine todos os vírus estáveis ou todos os vírus viáveis.

Entrada

A primeira linha contém o inteiro $n$, o número de vírus e, consequentemente, de células ($1\le n\le500$).

As $n$ linhas seguintes contêm as descrições das células. Para cada célula, são dados $n$ números distintos de $1$ a $n$: os números dos vírus por ordem decrescente da suscetibilidade da célula a eles.

A última linha contém o número $p$, que especifica a propriedade dos vírus que interessa aos cientistas. O valor $p=1$ significa que querem determinar todos os vírus estáveis, e $p=2$ significa que querem determinar todos os vírus viáveis.

Saída

A primeira linha deve conter o inteiro $k$, o número de vírus que possuem a propriedade pretendida ($0\le k\le n$).

A segunda linha deve conter $k$ inteiros, os números dos vírus que possuem essa propriedade, por ordem crescente.

Exemplos

Entrada 1

2
1 2
2 1
1

Saída 1

2
1 2

Entrada 2

2
1 2
2 1
2

Saída 2

2
1 2

Entrada 3

2
2 1
1 2
1

Saída 3

0

Entrada 4

2
2 1
1 2
2

Saída 4

2
1 2

Entrada 5

2
1 2
1 2
1

Saída 5

1
1

Entrada 6

2
1 2
1 2
2

Saída 6

1
1

Entrada 7

4
3 2 4 1
1 4 2 3
3 1 2 4
1 4 2 3
1

Saída 7

1
3

Entrada 8

4
3 2 4 1
1 4 2 3
3 1 2 4
1 4 2 3
2

Saída 8

3
1 3 4

Pontuação

Subtarefa Pontos Limites de $n$ Limites de $p$ Subtarefas necessárias Resultados durante a prova
1 11 $1\le n\le5$ $p=1$ Por teste
2 21 $1\le n\le500$ $p=1$ 1 Primeiro erro
3 22 $1\le n\le5$ Exemplos, 1 Por teste
4 31 $1\le n\le50$ Exemplos, 1–3 Primeiro erro
5 15 $1\le n\le500$ Exemplos, 1–4 Primeiro erro

Informações gerais sobre as tarefas da primeira prova

Tarefa Tipo de tarefa Limites
1. Extração de rádio Padrão 1 s, 512 MB
2. Vírus Padrão 1 s, 512 MB
3. Иннофон Padrão 3 s, 512 MB
4. Teletransporte quântico Padrão 4 s, 512 MB

Os dados devem ser lidos da entrada padrão. Os dados de saída devem ser escritos na saída padrão.

Em todas as tarefas, os pontos de uma subtarefa só são atribuídos se todos os seus testes forem aprovados.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.