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())
#
# ans = []

#     A = int(input())
#     for j in range(A):
#         ans.append(list(map(int, input().split())))
#
# print(ans)

print(bin(1 << 15))
print(1 << 15)
print(2**15)
n= int(input())
shogens = []
for i in range(n):
    a = int(input())
    shogens.append([])
    for j in range(a):
        x, y = map(int, input().split())
        x -= 1
        shogens[i].append((x, y))
print(shogens)

# def is_honest(i, j):
#     return (i >> j) % 2 == 1
#

#     ans = 0
#     for j in range(n):
#         ans += is_honest(i, j)
#     return ans
# ans = 0
#

#     ok = True
#     print(bin(i))
#     for j in range(n):
#         if not is_honest(i, j):continue
#         for (x, y) in shogens[j]:
#             if y == 0 and is_honest(i, x):ok = False
#             if y == 1 and not is_honest(i, x):ok = False
#
#     if ok:
#         ans = max(ans, honest_cnt(i))
#
# print("ans", ans)

lists = {i : 0 for i in range(1 << 15)}
for i in range(1 << 15):
    count = 0
    for j in range(n):
        if (i >> j) & 1:
            for x, y in shogens[j]:
                if y == 0 and (i >> x) & 1: count -= 1
                if y == 1 and not (i >> x) & 1: count -= 1
    if count == 0:
        ans = 0
        for k in range(n):
            ans += (i >> k) % 2
        lists[i] = ans

print(max(lists.values()))
# print(0 >> 0)





# N = int(input())
#
# ans = []

#     A = int(input())
#     for j in range(A):
#         ans.append(list(map(int, input().split())))
#
# print(ans)

# print(bin(1 << 15))
# print(1 << 15)
# print(2**15)
n= int(input())
shogens = []
for i in range(n):
    a = int(input())
    shogens.append([])
    for j in range(a):
        x, y = map(int, input().split())
        x -= 1
        shogens[i].append((x, y))


# def is_honest(i, j):
#     return (i >> j) % 2 == 1
#

#     ans = 0
#     for j in range(n):
#         ans += is_honest(i, j)
#     return ans
# ans = 0
#

#     ok = True
#     print(bin(i))
#     for j in range(n):
#         if not is_honest(i, j):continue
#         for (x, y) in shogens[j]:
#             if y == 0 and is_honest(i, x):ok = False
#             if y == 1 and not is_honest(i, x):ok = False
#
#     if ok:
#         ans = max(ans, honest_cnt(i))
#
# print("ans", ans)

lists = {i : 0 for i in range(1 << 15)}
for i in range(1 << 15):
    count = 0
    for j in range(n):
        if (i >> j) & 1:
            for x, y in shogens[j]:
                if y == 0 and (i >> x) & 1: count -= 1
                if y == 1 and not (i >> x) & 1: count -= 1
    if count == 0:
        ans = 0
        for k in range(n):
            ans += (i >> k) % 2
        lists[i] = ans

print(max(lists.values()))
# print(0 >> 0)





Verdicts: Wrong Answer

Accepted