题意:
有
n
n
n 个公主,
n
n
n 个王子,每个公主有
k
k
k 个中意的王子,问有没有办法增加公主与王子匹配的个数,有就输出
“
I
M
P
R
O
V
E
”
“IMPROVE”
“IMPROVE” ,以及新增匹配的下标,没有输出
“
O
P
T
I
M
A
L
”
“OPTIMAL”
“OPTIMAL”
根据题意全都放进
s
e
t
set
set 暴力匹配即可。
AC代码:
const int N = 1e6 + 10;
int n, m, k, x;
int ans, res, tmp;
set<int> s1, s2;
bool flag;
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
s1.clear();
s2.clear();
rep(i, 1, n)
s1.insert(i);
rep(i, 1, n)
{
sd(k);
flag = false;
rep(j, 1, k)
{
sd(x);
if (!flag && s1.count(x))
{
s1.erase(x);
flag = true;
}
}
if (!flag)
s2.insert(i);
}
if (s1.empty())
puts("OPTIMAL");
else
{
int ans1 = *s2.begin();
int ans2 = *s1.begin();
puts("IMPROVE");
pdd(ans1, ans2);
}
}
return 0;
}