Problem: There are N people numbered 1 to N. Each of them is either an _honest_ person whose testimonies are always correct or an _unkind_ person whose testimonies may be correct or not.  Person i gives A_i testimonies. The j-th testimony by Person i is represented by two integers x_{ij} and y_{ij}. If y_{ij} = 1, the testimony says Person x_{ij} is honest; if y_{ij} = 0, it says Person x_{ij} is unkind.  How many honest persons can be among those N people at most?

Submission attempts (in order):
n = int(input())
test_list = [[[int(i) for i in input().split()] for j in range(int(input()))] for k in range(n)]
    
man_list = [[int(j) for j in bin(i)[2:].zfill(n)] for i in range(2**n)]
     
ans = 0
bad = 0
     
for man in man_list:
    for j in range(n):
        if man[j] == 1:
          for k in test_list[j]:
            x = k[0] - 1
            y = k[1]
            if man[x] != y:
              bad = 1
              break
        if bad == 1:
          bad = 0
          break
    else:
        ans = max(ans, sum(man))
     
    print(ans)

n = int(input())
test_list = [[[int(i) for i in input().split()] for j in range(int(input()))] for k in range(n)]
    
man_list = [[int(j) for j in bin(i)[2:].zfill(n)] for i in range(2**n)]
    
ans = 0
bad = 0
    
for man in man_list:
    for j in range(n):
        if man[j] == 1:
            for k in test_list[j]:
            x = k[0] - 1
            y = k[1]
            if man[x] != y:
                bad = 1
                break
        if bad == 1:
            bad = 0
            break
        else:
            ans = max(ans, sum(man))
    
print(ans)

n = int(input())
test_list = [[[int(i) for i in input().split()] for j in range(int(input()))] for k in range(n)]
    
man_list = [[int(j) for j in bin(i)[2:].zfill(n)] for i in range(2**n)]
    
ans = 0
bad = 0
    
for man in man_list:
    for j in range(n):
        if man[j] == 1:
            for k in test_list[j]:
            x = k[0] - 1
            y = k[1]
            if man[x] != y:
                bad = 1
                break
    if bad == 1:
        bad = 0
        break
    else:
        ans = max(ans, sum(man))
    
print(ans)

n = int(input())
test_list = [[[int(i) for i in input().split()] for j in range(int(input()))] for k in range(n)]
    
man_list = [[int(j) for j in bin(i)[2:].zfill(n)] for i in range(2**n)]
     
ans = 0
bad = 0
     
for man in man_list:
    for j in range(n):
        if man[j] == 1:
          for k in test_list[j]:
            x = k[0] - 1
            y = k[1]
            if man[x] != y:
              bad = 1
              break
        if bad == 1:
          bad = 0
          break
        else:
            ans = max(ans, sum(man))
     
print(ans)

n = int(input())

times = n
table = []
for _ in range(times):
    a = int(input())
    temp = []
    for _ in range(a):
        x , y = map(int,input().split())
        temp.append([x-1,y])
    table.append(temp)  


def check(i,n):
    flg = True
    for j in range(n):
        if i>>j & 1:
            for x,y in table[j]:
                if (i>>x)&1 != y:
                    flg = False
                    return flg
    return flg
ans = 0
for i in range(2**n):
    if check(i,n):
        ans = max(bin(i).count("1"),ans)

print(ans)

Verdicts: Wrong Answer

Runtime Error

Runtime Error

Wrong Answer

Accepted