题解 P1636 【Einstein学画画】

· · 题解

如果大家有 被一笔画折磨过的经历 学过一笔画,那么这道题就不难了

如果没学过一笔画,请仔细地看我所写的话(反正也看不懂)

先统计每个点引出的线段有几个是奇数(储存在sum)

如果sum为0 就输出1

反之输出ceil(sum/2.0)

献上代码:

#include <bits/stdc++.h>
using namespace std;
int m,n,line[1001],x,y,sum;
int main()
{
    cin>>n>>m;//输入,不用说
    for (int i=1;i<=m;i++)//统计每个点引出几条线
    {
        cin>>x>>y;
        line[x]++;
        line[y]++;
    }
    for (int i=1;i<=n;i++)
        if (line[i]%2==1)//如果是奇数就统计入sum
            sum++;
    switch (sum)
    {
        case 0:cout<<1;break;//如果sum为0 就输出1
        default:cout<<ceil(sum/2.0);break;//反之输出ceil(sum/2.0) ###注意### 要除以2.0不是2
    }
    return 0;//是不是觉得很简单???
}