转化模型为在求一个无向图中不属于任何简单奇圈的点的个数,我们可以求出所有属于简单奇圈的点剩下的点就是答案,首先求在一个简单圈中的点,显然是求点双连通分量(俩个点的点双连通分量不是简单圈,但在后面判断二分图时会把这种情况排除掉),二分图与不存在奇圈的图是等价定义,所以只要在求出点双连通分量后判断每个连通分量是否是二分图(因为如果子原图是二分图,那么其子图必定也是二分图,所以只要判断连通分量是不是二分图就可以了).
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <algorithm>
#include <vector>
#include <cstring>
#include <stack>
#include <cctype>
#include <utility>
#include <map>
#include <string>
#include <climits>
#include <set>
#include <string>
#include <sstream>
#include <utility>
#include <ctime>
using std::priority_queue;
using std::vector;
using std::swap;
using st