题解
- 题目描述有问题!!!题目描述有问题!!!题目描述有问题!!!
- “任意两个敢死队员的路径不能重复”是指一个点只走一次
- 那么这样的话,也就是一个点只经过一次
- 这样的话,我们可以将一个点拆成两个点,入点和出点
- 那么就形成了一个二分图,在二分图上求最大匹配数
- 匈牙利即可
代码
1 #include <cstdio>
2 #include <iostream>
3 #include <algorithm>
4 #include <cstring>
5 using namespace std;
6 int n,m,x[210],y[210],f[210][210],visit[210],l[210],ans;
7 bool xyl(int x)
8 {
9 for (int i=1;i<=n;i++)
10 if (f[x][i]==true&&visit[i]==0)
11 {
12 visit[i]=1;
13 if (l[i]==0||xyl(l[i]))
14 {
15 l[i]=x;
16 return true;
17 }
18 }
19 return false;
20 }
21 int main()
22 {
23 scanf("%d",&n);
24 for (int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]);
25 scanf("%d",&m);
26 for (int i=1;i<=m;i++)
27 {
28 int a,b;
29 scanf("%d%d",&a,&b);
30 if (x[a]>b[x]) f[b][a]=true; else f[a][b]=true;
31 }
32 ans=n;
33 for (int i=1;i<=n;i++)
34 {
35 memset(visit,0,sizeof(visit));
36 if (xyl(i)) ans--;
37 }
38 printf("%d",ans);
39 return 0;
40 }