AcWing 379. 捉迷藏
原题链接
中等
作者:
ZTEG
,
2020-02-02 20:14:23
,
所有人可见
,
阅读 1570
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b;
int ans;
bool book[205][205];
int belong[205];
bool used[205];
bool find(int x)
{
for(int i=1;i<=n;i++)
{
if(used[i]||!book[x][i])
continue;
used[i]=1;
if(!belong[i]||find(belong[i]))
{
belong[i]=x;
return 1;
}
}
return 0;
}
int main()
{
cin>>n>>m;
while(m--)
{
scanf("%d %d",&a,&b);
book[a][b]=1;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<n;j++)
if(book[i][k]&&book[k][j])
book[i][j]=1;
for(int i=1;i<=n;i++)
{
memset(used,0,sizeof(used));
if(find(i))
ans++;
}
cout<<n-ans<<endl;
return 0;
}