-
B - The Accomodation of Students
- HDU - 2444
-
#include<bits/stdc++.h> using namespace std; #define maxn 222 int n,m,u,v,net[maxn],ans; vector<int>g[maxn]; bool vis[maxn]; int color[maxn]; void init() { for(int i=1; i<=n; i++) { g[i].clear(); color[i]=0; net[i]=0; } } bool bfs() { queue<int>q; q.push(1); color[1]=1; while(!q.empty()) { int u=q.front(); q.pop(); for(int i=0; i<g[u].size(); i++) { int v=g[u][i]; if(color[v]==0) { color[v]=-color[u]; q.push(v); } else if(color[u]==color[v]) return false; } } return true; } bool dfs(int x) { for(int i=0; i<g[x].size(); i++) { if(vis[g[x][i]]==0) { vis[g[x][i]]=1; if(net[g[x][i]]==0||dfs(net[g[x][i]])) { net[g[x][i]]=x; return true; } } } return false; } int main() { while(cin>>n>>m) { init(); ans=0; while(m--) { cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } if(bfs()&&n!=1) { for(int i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } cout<<ans/2<<endl; } else cout<<"No"<<endl; } return 0; }
The Accomodation of Students -染色+匹配
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/82014444
今日推荐
周排行