fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <vector>
  4. using namespace std;
  5.  
  6.  
  7. int main() {
  8. freopen("Text.txt", "r", stdin);
  9. int testCases;
  10. cin >> testCases;
  11.  
  12. for (int t = 1; t <= testCases; t++) {
  13. int n, m;
  14. cin >> n >> m;
  15.  
  16. // Đọc ma trận tiếp xúc
  17. vector<vector<int>> contact(n + 1, vector<int>(n + 1));
  18. for (int i = 1; i <= n; i++) {
  19. for (int j = 1; j <= n; j++) {
  20. cin >> contact[i][j];
  21. }
  22. }
  23.  
  24. // Đọc danh sách F0
  25. vector<int> f0List(m);
  26. for (int i = 0; i < m; i++) {
  27. cin >> f0List[i];
  28. }
  29.  
  30. // Khởi tạo mảng để theo dõi trạng thái của mỗi người
  31. // status[i] = 0: chưa nhiễm
  32. // status[i] = 1: F0
  33. // status[i] = 2: F1
  34. // status[i] = 3: F2
  35. vector<int> status(n + 1, 0);
  36.  
  37. // Đánh dấu F0
  38. for (int i = 0; i < m; i++) {
  39. status[f0List[i]] = 1;
  40. }
  41.  
  42. // Xác định F1
  43. for (int i = 1; i <= n; i++) {
  44. if (status[i] == 0) {
  45. for (int j = 0; j < m; j++) {
  46. int f0Person = f0List[j];
  47. if (contact[i][f0Person] == 1) {
  48. status[i] = 2;
  49. break;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. // Xác định F2
  56. for (int i = 1; i <= n; i++) {
  57. if (status[i] == 0) {
  58. for (int j = 1; j <= n; j++) {
  59. if (status[j] == 2 && contact[i][j] == 1) {
  60. status[i] = 3;
  61. break;
  62. }
  63. }
  64. }
  65. }
  66.  
  67. // Đếm số lượng F1 F2
  68. int countF1 = 0, countF2 = 0;
  69. for (int i = 1; i <= n; i++) {
  70. if (status[i] == 2) countF1++;
  71. else if (status[i] == 3) countF2++;
  72. }
  73. cout << "#" << t << " " << countF1 << " " << countF2 << endl;
  74. }
  75.  
  76. return 0;
  77. }
  78.  
  79.  
  80.  
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
Standard output is empty