Einstein学画画

# Einstein学画画

## 题目描述
Einstein 学起了画画。
此人比较懒~~,他希望用最少的笔画画出一张画……
给定一个无向连通图,包含 n 个顶点(编号 1 ~ n),m 条边,求最少用多少笔可以画出图中所有的边。

## 输入格式
第一行两个整数 n, m。
接下来 m 行,每行两个数 a, b(a ≠ b),表示 a, b 两点之间有一条边相连。
一条边不会被描述多次。

## 输出格式
一个数,即问题的答案。

### 样例输入 #1
5 5
2 3
2 4
2 5
3 4
4 5

### 样例输出 #1
1

## 提示
对于 100% 的数据,1 <=e n <= 1000,1 <= m <= 10^5。

解析:

可以理解成求欧拉路的条数,因为一笔就是一条欧拉路。

欧拉路:若从起点到终点的路径恰好通过图中每一条边一次(起点与终点不同),则该路径称为欧拉路。 

若存在欧拉路,需要图是连通的,且2个奇数点,从一个奇数点出发,以另一个奇数点结束。

所以我们判断图中点的奇数点的个数就可以了。

但是,有一种特殊情况,就是每个点的度数都是偶数,即这个图是个欧拉回路,一笔就可以画成,所以我们要特判一下。

#include 
using namespace std;
const int N=1e6+10;
int cnt[N];//记录每个点的度数
int main()
{
    int n,m;
    cin>>n>>m;
    for (int i=0;i>a>>b;
        cnt[a]++;
        cnt[b]++;
    }
    int ans=0;
    for (int i=1;i<=n;i++) if (cnt[i]%2!=0) ans++;
    if (ans!=0) cout<

你可能感兴趣的:(笔记)