QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100

#24341. Virus

Statistics

En av den moderna datavetenskapens viktigaste uppgifter är att modellera biologiska processer. Nyligen upptäckte biologer $n$ virus, som vart och ett tilldelades ett unikt kodnummer från $1$ till $n$. Ett virus kan tränga in i andra organismers celler. Från början har forskarna $n$ celler, numrerade från $1$ till $n$, och cell $i$ är infekterad med virus $i$. Varje cell kan bara vara infekterad med ett virus.

För varje cell har dess mottaglighet för vart och ett av virusen fastställts. För varje cell vet man alltså vilket virus den är mest mottaglig för, vilket av de återstående virusen den är mest mottaglig för, och så vidare.

Virusinfekterade celler angriper varandra. Anta att cell $i$ för närvarande är infekterad med virus $a$ och angriper cell $j$, som är infekterad med virus $b$. Om cell $j$ är mer mottaglig för virus $a$ än för virus $b$, blir cell $j$ infekterad med virus $a$.

I experimentet placerar forskarna alla $n$ celler i en sluten miljö, där cellerna kan angripa varandra på godtyckligt sätt. Experimentet avslutas när sådana angrepp inte längre kan ändra vilket virus någon cell är infekterad med.

Forskarna kallar virus $i$ stabilt om det, för varje följd av angrepp mellan cellerna som leder till att experimentet avslutas, finns minst en cell kvar som är infekterad med virus $i$.

Forskarna kallar virus $i$ livskraftigt om det finns en följd av angrepp mellan cellerna som leder till att experimentet avslutas och efter vilken minst en cell är infekterad med virus $i$.

Anta till exempel att det finns två virus och att cell $1$ är mest mottaglig för virus $1$, medan cell $2$ är mest mottaglig för virus $2$. Då avslutas experimentet omedelbart: inget angrepp ändrar vilket virus en cell är infekterad med. Båda virusen är därför stabila och livskraftiga.

Anta nu att det finns två virus, men att cell $1$ är mest mottaglig för virus $2$ och cell $2$ för virus $1$. Då avslutas experimentet efter vilket angrepp som helst från en cell mot den andra. Det finns två möjliga förlopp. I det första angriper cell $1$ cell $2$, och båda cellerna blir infekterade med virus $1$. I det andra angriper cell $2$ cell $1$, och därefter är båda cellerna infekterade med virus $2$. Det finns alltså inga stabila virus, men båda virusen är livskraftiga.

Anta slutligen att det finns två virus och att båda cellerna är mer mottagliga för virus $1$. Då ändrar ett angrepp från cell $2$ mot cell $1$ inte vilket virus den är infekterad med. Om cell $1$ angriper cell $2$, blir den andra cellen infekterad med virus $1$. Experimentet avslutas således efter att cell $2$ har angripit cell $1$; virus $1$ är stabilt och livskraftigt, medan virus $2$ inte har någon av egenskaperna.

Forskarna behöver besvara två typer av frågor: vilka virus som är stabila och vilka virus som är livskraftiga.

Skriv ett program som utifrån beskrivningen av cellerna och frågetypen bestämmer alla stabila eller alla livskraftiga virus.

Indata

Den första raden innehåller ett heltal $n$ — antalet virus och därmed antalet celler ($1\le n\le500$).

De följande $n$ raderna beskriver cellerna. För varje cell anges $n$ olika tal från $1$ till $n$: virusens nummer i fallande ordning efter cellens mottaglighet för dem.

Den sista raden innehåller talet $p$, som anger vilken egenskap forskarna är intresserade av. Värdet $p=1$ betyder att forskarna vill bestämma alla stabila virus, och $p=2$ betyder att de vill bestämma alla livskraftiga virus.

Utdata

Den första raden ska innehålla ett heltal $k$ — antalet virus som har den egenskap forskarna är intresserade av ($0\le k\le n$).

Den andra raden ska innehålla $k$ heltal — numren på virusen som har denna egenskap. Virusnumren ska skrivas i stigande ordning.

Exempel

Indata 1

2
1 2
2 1
1

Utdata 1

2
1 2

Indata 2

2
1 2
2 1
2

Utdata 2

2
1 2

Indata 3

2
2 1
1 2
1

Utdata 3

0

Indata 4

2
2 1
1 2
2

Utdata 4

2
1 2

Indata 5

2
1 2
1 2
1

Utdata 5

1
1

Indata 6

2
1 2
1 2
2

Utdata 6

1
1

Indata 7

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

Utdata 7

1
3

Indata 8

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

Utdata 8

3
1 3 4

Deluppgifter

Deluppgift Poäng Begränsningar för $n$ Begränsningar för $p$ Nödvändiga deluppgifter Resultat under tävlingen
1 11 $1\le n\le5$ $p=1$ Resultat för varje test
2 21 $1\le n\le500$ $p=1$ 1 Första felet
3 22 $1\le n\le5$ Exempel, 1 Resultat för varje test
4 31 $1\le n\le50$ Exempel, 1–3 Första felet
5 15 $1\le n\le500$ Exempel, 1–4 Första felet

Allmän information om uppgifterna i den första omgången

Data ska läsas från standardindata. Utdata ska skrivas till standardutdata.

I alla uppgifter tilldelas poäng för en deluppgift endast om alla tester för den deluppgiften har klarats.

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.