#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=1e3+10;
vector<int>g[N];
int match[N];
bool vis[N];
int n,m,k;
int col[N];
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;
}
bool check(int x,int fa){
int fl=1;
for(auto to:g[x]){
if(to==fa) continue;
if(col[to]!=-1&&col[to]^col[x]==0) fl=0;
if(col[to]==-1){
col[to]=col[x]^1;
fl&=check(to,x);
}
}
if(fl==1) return 1;
else return 0;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++) g[i].clear();
memset(match,0,sizeof match);
for(int i=1;i<=m;i++){
int a,b;scanf("%d%d",&a,&b);
g[a].push_back(b);
g[b].push_back(a);
}
memset(col,-1,sizeof col);
col[1]=0;
if(check(1,0)==0) cout<<"No"<<endl;
else {
int cnt=0;
for(int i=1;i<=n;i++){
memset(vis,0,sizeof vis);
// if(col[i]==0) dfs(i);
if(dfs(i)) cnt++;
}
cout<<cnt/2<<endl;
}
}
}
hdu2444 The Accomodation of Students(二分图匹配+判断二分图
最新推荐文章于 2022-03-25 19:06:53 发布