既然我们知道万恶的奶牛只做一架航班,那么我们就没有必要考虑交叉之类的复杂情况。
只要检查每一条航班,只要$a$在$b$前面,那么这一条航班就是可行的。
求所有可行的航班花费最小值,就很简单了,注意特判!
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, n, ans = 0x3f3f3f3f; cin >> a >> b >> n;
int x[10010];
for (int i = 1; i <= n; i++) {
int money, s; cin >> money >> s;
bool _a = 0;
for (int j = 1; j <= s; j++) {
scanf("%d", &x[j]); if (x[j] == a) _a = 1;
if (x[j] == b && _a) ans = min(ans, money);
}
}
if (ans != 0x3f3f3f3f) printf("%d\n", ans);
else puts("-1");
return 0;
}