#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
vector<int>g[N];
int match[N];
bool vis[N];
ll ans;
int n,m,k;
bool dfs(int x){
for(int v:g[x]){
if(vis[v])continue;
vis[v]=1;
if(!match[v]||dfs(match[v])){
match[v]=x;
return 1;
}
}
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int a,b;scanf("%d%d",&a,&b);
g[a].push_back(i);
g[b].push_back(i)
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof vis);
if(dfs(i)==0){
cout<<i-1<<endl;
return 0;
}
}
cout<<n<<endl;
}
[SCOI2010]游戏(二分图匹配
最新推荐文章于 2022-05-14 13:05:45 发布