Codeforces 435 B Mahmoud and Ehab and the bipartiteness 二分图的最大匹配问题
题目链接: http://codeforces.com/contest/862/problem/B
题目描述: 给一个图, 问最多连多少线, 可以作为二分图
解题思路: 求二分图的最大匹配, DFS
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream> #include <cstdio> #include <map> #include <iterator> #include <string> #include <algorithm> #include <vector> using namespace std; typedef long long ll; const int maxn = 1e5+10; int n; int color[maxn]; vector<int> G[maxn]; void dfs( int s, int co ) { color[s] = co; for( int i = 0; i < (int)G[s].size(); i++ ) { int to = G[s][i]; if( color[to] == 0 ) { dfs(to, -1*co); } } } int main() { scanf( "%d", &n ); for( int i = 0; i < n-1; i++ ) { int u, v; scanf( "%d%d", &u, &v ); G[u].push_back(v); G[v].push_back(u); } int s1 = 0; dfs(1, 1); for( int i = 1; i <= n; i++ ) { if( color[i] == -1 ) s1++; } printf( "%lld\n", 1ll*(n-s1)*s1-1ll*n+1ll); return 0; }
思考: 好好学习图论啊, 这种就是很裸的题目.......但是有好多学术的问题我还是不知道啊
http://codeforces.com/contest/862/problem/B
posted on 2017-09-28 21:07 FriskyPuppy 阅读(229) 评论(0) 编辑 收藏 举报