QOJ.ac

QOJ

Süre Sınırı: 1.0 s Bellek Sınırı: 512 MB Toplam puan: 100

#24341. Virus

İstatistikler

Một trong những nhiệm vụ quan trọng nhất của tin học hiện đại là mô phỏng các quá trình sinh học. Gần đây, các nhà sinh học phát hiện $n$ virus, mỗi virus được gán một mã số riêng từ $1$ đến $n$. Virus có khả năng xâm nhập vào tế bào của các sinh vật khác. Ban đầu, các nhà khoa học có $n$ tế bào, được đánh số từ $1$ đến $n$, trong đó tế bào $i$ nhiễm virus $i$. Mỗi tế bào chỉ có thể nhiễm một virus.

Mức độ nhạy cảm của mỗi tế bào với từng virus đã được xác định. Cụ thể, với mỗi tế bào, ta biết virus mà nó nhạy cảm nhất, rồi virus mà nó nhạy cảm nhất trong số còn lại, và cứ như vậy.

Các tế bào nhiễm virus tấn công lẫn nhau. Giả sử tế bào $i$ đang nhiễm virus $a$ tấn công tế bào $j$ đang nhiễm virus $b$. Nếu tế bào $j$ nhạy cảm với virus $a$ hơn virus $b$, tế bào $j$ sẽ chuyển sang nhiễm virus $a$.

Trong thí nghiệm, các nhà khoa học đặt cả $n$ tế bào vào một môi trường kín, nơi chúng có thể tấn công lẫn nhau theo cách tùy ý. Thí nghiệm kết thúc khi các cuộc tấn công như vậy không còn có thể làm thay đổi virus đang nhiễm bất kỳ tế bào nào.

Các nhà khoa học gọi virus $i$ là ổn định nếu, với mọi chuỗi tấn công giữa các tế bào dẫn đến kết thúc thí nghiệm, vẫn còn ít nhất một tế bào nhiễm virus $i$.

Các nhà khoa học gọi virus $i$ là có khả năng tồn tại nếu tồn tại một chuỗi tấn công giữa các tế bào dẫn đến kết thúc thí nghiệm mà sau đó vẫn còn ít nhất một tế bào nhiễm virus $i$.

Ví dụ, giả sử có hai virus, tế bào $1$ nhạy cảm nhất với virus $1$, còn tế bào $2$ nhạy cảm nhất với virus $2$. Thí nghiệm kết thúc ngay: không cuộc tấn công nào làm thay đổi virus nhiễm tế bào. Vì vậy, cả hai virus đều ổn định và có khả năng tồn tại.

Bây giờ giả sử có hai virus, nhưng tế bào $1$ nhạy cảm nhất với virus $2$, còn tế bào $2$ nhạy cảm nhất với virus $1$. Thí nghiệm kết thúc sau bất kỳ cuộc tấn công nào của một tế bào lên tế bào còn lại. Có hai kịch bản. Trong kịch bản thứ nhất, tế bào $1$ tấn công tế bào $2$, và cả hai tế bào đều nhiễm virus $1$. Trong kịch bản thứ hai, tế bào $2$ tấn công tế bào $1$, và cả hai tế bào đều nhiễm virus $2$. Vì vậy, không có virus ổn định, nhưng cả hai đều có khả năng tồn tại.

Cuối cùng, giả sử có hai virus và cả hai tế bào đều nhạy cảm hơn với virus $1$. Khi đó, tế bào $2$ tấn công tế bào $1$ không làm thay đổi virus mà nó đang nhiễm; còn nếu tế bào $1$ tấn công tế bào $2$, tế bào thứ hai chuyển sang nhiễm virus $1$. Do đó, thí nghiệm sẽ kết thúc sau khi tế bào $2$ tấn công tế bào $1$; virus $1$ vừa ổn định vừa có khả năng tồn tại, còn virus $2$ không có tính chất nào trong hai tính chất này.

Các nhà khoa học cần trả lời hai loại câu hỏi: những virus nào ổn định và những virus nào có khả năng tồn tại.

Hãy viết chương trình xác định tất cả virus ổn định hoặc tất cả virus có khả năng tồn tại, dựa trên mô tả các tế bào và loại câu hỏi.

Dữ liệu vào

Dòng đầu chứa số nguyên $n$, số virus và cũng là số tế bào ($1\le n\le500$).

$n$ dòng tiếp theo mô tả các tế bào. Với mỗi tế bào, có $n$ số phân biệt từ $1$ đến $n$: mã số các virus theo thứ tự giảm dần mức độ nhạy cảm của tế bào với chúng.

Dòng cuối chứa số $p$, chỉ tính chất virus mà các nhà khoa học quan tâm. $p=1$ nghĩa là tìm tất cả virus ổn định, còn $p=2$ nghĩa là tìm tất cả virus có khả năng tồn tại.

Dữ liệu ra

Dòng đầu chứa số nguyên $k$, số virus có tính chất cần tìm ($0\le k\le n$).

Dòng thứ hai chứa $k$ số nguyên, mã số các virus có tính chất đó. In các mã số theo thứ tự tăng dần.

Ví dụ

Dữ liệu vào 1

2
1 2
2 1
1

Dữ liệu ra 1

2
1 2

Dữ liệu vào 2

2
1 2
2 1
2

Dữ liệu ra 2

2
1 2

Dữ liệu vào 3

2
2 1
1 2
1

Dữ liệu ra 3

0

Dữ liệu vào 4

2
2 1
1 2
2

Dữ liệu ra 4

2
1 2

Dữ liệu vào 5

2
1 2
1 2
1

Dữ liệu ra 5

1
1

Dữ liệu vào 6

2
1 2
1 2
2

Dữ liệu ra 6

1
1

Dữ liệu vào 7

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

Dữ liệu ra 7

1
3

Dữ liệu vào 8

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

Dữ liệu ra 8

3
1 3 4

Nhiệm vụ con

Nhiệm vụ con Điểm Giới hạn đối với $n$ Giới hạn đối với $p$ Nhiệm vụ con cần đạt Kết quả trong vòng thi
1 11 $1\le n\le5$ $p=1$ Từng kiểm thử
2 21 $1\le n\le500$ $p=1$ 1 Lỗi đầu tiên
3 22 $1\le n\le5$ Ví dụ, 1 Từng kiểm thử
4 31 $1\le n\le50$ Ví dụ, 1–3 Lỗi đầu tiên
5 15 $1\le n\le500$ Ví dụ, 1–4 Lỗi đầu tiên

Thông tin chung về các bài toán của vòng thi thứ nhất

Cần đọc dữ liệu từ luồng nhập chuẩn và in dữ liệu ra luồng xuất chuẩn.

Trong tất cả các bài toán, điểm của một nhiệm vụ con chỉ được trao nếu vượt qua tất cả kiểm thử của nhiệm vụ con đó.

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.