# 題目
zerojudge c889. 2. 二分圖
# 解題思路
目前沒東西...
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
#define Rabbir_Reaper ios::sync_with_stdio(0);cin.tie(); | |
#define N 100005 | |
vector<int> adj[N]; | |
int visit[N]; | |
int black,white,tblack,twhite; | |
void dfs(int pos){ | |
if(visit[pos]==1) tblack++; | |
if(visit[pos]==2) twhite++; | |
for(auto &u:adj[pos]){ | |
if(visit[u]==0){ | |
visit[u]=3-visit[pos]; | |
dfs(u); | |
}else if(visit[u] != 3-visit[pos]){ | |
tblack=-1; | |
twhite=0; | |
break; | |
} | |
} | |
} | |
int main(){ | |
Rabbir_Reaper | |
int n,m; | |
cin>>n>>m; | |
for(int i=0,u,v;i<m;i++){ | |
cin>>u>>v; | |
adj[u].push_back(v); | |
adj[v].push_back(u); | |
} | |
for(int i=0;i<n;i++){ | |
if(visit[i]==0){ | |
visit[i]=1; | |
dfs(i); | |
black+=min(tblack,twhite); | |
white+=max(tblack,twhite); | |
if(tblack == -1){ | |
black=0; | |
break; | |
} | |
tblack=0; | |
twhite=0; | |
} | |
} | |
cout<<black; | |
} |