题目描述

Einstein 学起了画画。

此人比较懒~~,他希望用最少的笔画画出一张画……

给定一个无向图,包含 nn 个顶点(编号 1 \sim n1n),mm 条边,求最少用多少笔可以画出图中所有的边。

输入格式

第一行两个整数 n, mn,m

接下来 mm 行,每行两个数 a, ba,ba \ne ba=b),表示 a, ba,b 两点之间有一条边相连。

一条边不会被描述多次。

输出格式

一个数,即问题的答案。

输入输出样例

输入 #1复制
5 5
2 3
2 4
2 5
3 4
4 5
输出 #1复制
1

 

说明/提示

对于 %50% 的数据,n50,m100

对于 100% 的数据,1n1000,m≤10^5(不是异或)

CODE

#include <iostream>
using namespace std;

const int MAXN = 1001;
bool map[MAXN][MAXN];
int tmp1, tmp2, n, m;

int main(){
	// 读入数据,转化为临接矩阵 
	cin >> n >> m;
	for(int i=1; i<=m; i++){
		cin >> tmp1 >> tmp2;
		map[tmp1][tmp2] = true;
		map[tmp2][tmp1] = true;
	}
	unsigned long long ans = 0;
	for(int i=1; i<=n; i++){
		unsigned int cnt = 0;
		for(int j=1; j<=n; j++)
			if(map[i][j])
				cnt++;
		if(cnt & 1)
			ans++;
	}
	if(ans == 0) cout << 1 << endl;
	else cout << ans / 2 << endl;
	return 0;
}