#include <cstdio>
#include <algorithm>
using namespace std;
int i,j,k,m,n,o,p,l,t;
int x[100001],y[100001];
bool line[201][201],bz[201];
int done[100001];
void insert(int x,int y)
{
line[x][y]=true;
}
int find(int x)
{
for (int i=1;i<=n;i++)
{
if (line[x][i]==true&&bz[i]==false)
{
bz[i]=true;
if (!done[i]||find(done[i]))
{
done[i]=x;
return true;
}
}
}
return false;
}
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]);
scanf("%d",&m);
for (i=1;i<=m;i++) {
scanf("%d%d",&o,&p);
if (x[o]<x[p]) line[o][p]=true;
if (x[o]>x[p]) line[p][o]=true;
}
o=0;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++) bz[j]=false;
if (find(i)==true) o++;
}
printf("%d\n",n-o);
}
(相交)JZOJ3423&&CODEVS2494 Vani和Cl2捉迷藏
(几乎与bzoj1143祭祀完全相同 )
#include <cstdio>
#include <algorithm>
using namespace std;
int i,j,k,m,n,o,p,l,t;
int x[100001],y[100001];
bool f[201][201],bz[201];
int done[100001];
int read()
{
int p=0,f=1;char c=getchar();
while(c>='0'&&c<='9') p=p*10+c-'0',c=getchar();
return f*p;
}
int find(int x)
{
for (int i=1;i<=n;i++)
{
if (f[x][i]==true&&bz[i]==false)
{
bz[i]=true;
if (!done[i]||find(done[i]))
{
done[i]=x;
return true;
}
}
}
return false;
}
int main()
{
freopen("Ribery.in","r",stdin);
freopen("Ribery.out","w",stdout);
n=read(),m=read();
for (i=1;i<=m;i++) {
o=read(),p=read(),f[o][p]=true;
}
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
if (f[i][k])
for (j=1;j<=n;j++)
if (f[k][j]) f[i][j]=true;
o=0;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++) bz[j]=false;
if (find(i)==true) o++;
}
printf("%d\n",n-o);
return 0;
}