fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int MAXN = 100005;
  5. const int MAXM = 100005;
  6.  
  7. vector<int> f[MAXN];
  8. int c[MAXM];
  9. bool e[MAXN];
  10.  
  11. void solve() {
  12. int n, m;
  13. if (!(cin >> n >> m)) return;
  14.  
  15. memset(c, 0, sizeof(int) * (m + 1));
  16. memset(e, false, sizeof(bool) * n);
  17.  
  18. for (int i = 0; i < n; ++i) {
  19. f[i].clear();
  20. int l;
  21. cin >> l;
  22. for (int j = 0; j < l; ++j) {
  23. int p;
  24. cin >> p;
  25. f[i].push_back(p);
  26. if (p >= 1 && p <= m) {
  27. c[p]++;
  28. }
  29. }
  30. }
  31.  
  32. for (int p = 1; p <= m; ++p) {
  33. if (c[p] == 0) {
  34. cout << "NO" << "\n";
  35. return;
  36. }
  37. }
  38.  
  39. for (int i = 0; i < n; ++i) {
  40. for (int p : f[i]) {
  41. if (p >= 1 && p <= m && c[p] == 1) {
  42. e[i] = true;
  43. break;
  44. }
  45. }
  46. }
  47.  
  48. int k = 0;
  49. for (int i = 0; i < n; ++i) {
  50. if (!e[i]) {
  51. k++;
  52. }
  53. }
  54.  
  55. if (k >= 2) {
  56. cout << "YES" << "\n";
  57. } else {
  58. cout << "NO" << "\n";
  59. }
  60. }
  61.  
  62. int main() {
  63. ios_base::sync_with_stdio(false);
  64. cin.tie(NULL);
  65.  
  66. int t;
  67. if (!(cin >> t)) return 0;
  68. while (t--) {
  69. solve();
  70. }
  71.  
  72. return 0;
  73. }
Success #stdin #stdout 0.01s 5936KB
stdin
6
3 2
2 1 2
1 1
1 2
4 10
3 1 2 3
2 4 5
1 6
4 7 8 9 10
2 5
4 1 2 3 4
4 1 2 3 4
5 5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5 1 2 3 4 5
5 10
4 1 2 3 4
5 1 2 5 6 7
5 2 6 7 8 9
4 6 7 8 9
2 9 10
5 5
1 1
1 2
1 3
2 4 5
1 5
stdout
YES
NO
NO
YES
YES
NO