For this Question: N people numbered from 1 to N visited Newton's house on Christmas. Some of them were Santas and some of them were thieves. Newton wants a maximum number of Santas and the minimum number of thieves. To calculate, he asked all the N people to give some testimonies; in each of them, they should tell whether a particular person is a Santa or a thief.
If a person is really a Santa, he will never lie in his testimonies, but if he is a thief, he can either tell the truth or lie.Help newton finds the maximum number of Santas that he can count after hearing all the testimonies.The first line of the input contains a single integer N.
After that, each person <em>i</em> would give A<sub>i</sub> testimonies.
The first line would contain a single integer A<sub>i</sub> representing the count of the testimonies for the ith person. The next A<sub>i</sub> lines would contain 2 integers each, X<sub>i, j</sub> and Y<sub>i, j</sub> representing the jth testimony by the ith person. X<sub>i, j</sub> would represent a person (from 1 to N), and Y<sub>i, j</sub> would be either 1 (X<sub>i, j</sub> is Santa according to ith person) or 0 (X<sub>i, j</sub> is thief according to ith person).

<b>Constraints:</b>
<ul><li>1 &le; N &le; 15</li><li>0 &le; A<sub>i</sub> &le; N - 1</li><li>1 &le; X<sub>i, j</sub> &le; N </li><li>X<sub>i, j</sub> &ne; i</li><li>Y<sub>i, j</sub> = 0, 1</li></ul>Output the maximum number of santas that newton can get.<b>Sample Input 1:</b>
3
1
2 1
1
1 1
1
2 0

<b>Sample Output 1:</b>
2

<b>Sample Input 2:</b>
3
2
2 1
3 0
2
3 1
1 0
2
1 1
2 0

<b>Sample Output 2:</b>
0

<b>Sample Explanation 1:</b>
Person 1 and 2 are santas and Person 3 is a thief., I have written this Solution Code: #include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <map>
#include <set>
using namespace std;
int main() {
	int N;
	cin >> N;
	vector<vector<int>>k(N);
	vector<vector<int>>uk(N);
	for (int i = 0; i < N; i++) {
		int A;
		cin >> A;
		for (int j = 0; j < A; j++) {
			int X, Y;
			cin >> X >> Y;
			if (Y == 1)k[i].push_back(X - 1);
			else uk[i].push_back(X - 1);

		}
	}
	int kotae = 0;
	for (int b = 1; b < 1 << N; b++) {
		bool f = true;
		int c = 0;
		for (int i = 0; i < N; i++) {
			if (b & 1 << i) {
				//cout << b << " " << i << endl;
				c++;
				for (auto o : k[i]) 
					if ((b & 1 << o) == 0)
						f = false;
				for (auto o : uk[i]) 
					if ((b & 1 << o) != 0)
						f = false;
			}
		}
		//cout << endl;
		if (f)
			kotae = max(kotae, c);
	}
	cout << kotae << endl;
	return 0;
}
, In this Programming Language: C++, Now tell me if this Code is compilable or not?