标签:
http://acm.hdu.edu.cn/showproblem.php?pid=2444
Description
Input
Output
Sample Input
Sample Output
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #define N 210 int G[N][N], vis[N], used[N]; int m, n, f, c[N]; bool Find(int u) { int i; for(i = 1 ; i <= n ; i++) { if(!vis[i] && G[u][i]) { vis[i] = 1; if(!used[i] || Find(used[i])) { used[i] = u; return true; } } } return false; } void DFS(int x, int color) { int i; for(i = 1 ; i <= n ; i++) { if(G[x][i]) { if(c[i] == 0) { c[i] = -color;//将x相邻的点i染成与其不同的颜色 DFS(i, -color); } else if(c[i] == color)//如果相邻两点颜色相同则不是二分图 { f = 0; return ; } } } } int main() { int i, a, b; while(~scanf("%d%d", &n, &m)) { memset(G, 0, sizeof(G)); memset(c, 0, sizeof(c)); f = 1; while(m--) { scanf("%d%d", &a, &b); G[a][b] = G[b][a] = 1; } c[1] = 1; DFS(1, 1);//将1号染成黑色 if(f == 0) printf("No\n"); else { int ans = 0; memset(used, 0, sizeof(used)); for(i = 1 ; i<= n ; i++) { memset(vis, 0, sizeof(vis)); if(Find(i)) ans++; } printf("%d\n", ans / 2); } } return 0; }
hdu 2444 The Accomodation of Students(最大匹配 + 二分图判断)
标签:
原文地址:http://www.cnblogs.com/qq2424260747/p/4720224.html