题目链接:​​传送门​

很明显的二分图匹配
将题目和锦囊分别看做两侧的点
每个题目对应两个锦囊,也就是两条边
建出图来直接匈牙利就好
题目要求最多答到多少个题
也就是说有一个题目通过不了就不行
在中间break就可以

#include <bits/stdc++.h>
#define

using namespace std;
int n, m, a, b, p[A], ans; bool ap[A][A], vis[A];
bool find(int x) {
for (int i = 1; i <= n; i++)
if (ap[x][i] and !vis[i]) {
vis[i] = 1;
if (!p[i] or find(p[i])) {
p[i] = x;
return true;
}
}
return false;
}

int main(int argc, char const *argv[]) {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
scanf("%d%d", &a, &b); a++; b++;
ap[i][a] = 1; ap[i][b] = 1;
}
for (int i = 1; i <= m; i++) {
memset(vis, 0, sizeof vis);
if (find(i)) ans++; else break;
}
cout << ans << endl;
}