思路:N=15这个信息就很敏感,二进制枚举参加的人,对他们的话进行判断,看看是否出现矛盾,无矛盾则更新答案。
vector<pii> a[20];
int main()
{
//freopen("in.txt", "r", stdin);
int n;
while (cin >> n)
{
int x, y, m;
f(i, 1, n)
{
scanf("%d", &m);
while (m--)
{
scanf("%d%d", &x, &y);
a[i].emplace_back(pii{ x,y });
}
}
int ans = 0;
f(i, 0, (1 << n) - 1)
{
int fg = 1,cot=0;
set<int> st;
f(j, 0, n - 1)//1-n
{
if (i >> j & 1)st.insert(j + 1);
}
for (auto I : st)
{
for (auto i : a[I])
{
if(i.second==1)
{
if (!st.count(i.first)) { fg = 0;goto hh; }
}
else if (i.second == 0)
{
if (st.count(i.first)) { fg = 0;goto hh; }
}
}
}
hh:if (fg)ans = max(ans, (int)st.size());
}
cout << ans << endl;
}
return 0;
}