TOJ 3649 - 欧拉回路

传送门TOJ 3649 - 欧拉回路


有关欧拉回路的题目。

一开始想用图做先把每个点存到有向图里,然后先计算每个点的度数是否为偶数,然后再判断这个图能不能连通。。。

但是感觉太复杂了。

然后就看到了这样一个思路。。。涨姿势了。

根本不用那么复杂。


#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    //freopen("input.txt", "r", stdin);
    int point[1100];
    int n, m, i, a, b;
    while (scanf("%d", &n) && n)
    {
        memset(point, 0, sizeof(point));
        scanf("%d", &m);
        for (i = 0; i < m; i++)
        {
            scanf("%d%d", &a, &b);
            point[a]++;
            point[b]++;
        }
        for (i = 1; i <= n; i++)
        {
            if (!point[i] || point[i] % 2)  //如果一个点没有度或者度不是偶数,不存在欧拉回路。
            {
                printf("0\n");
                break;
            }
        }
        if (i == n + 1)
            printf("1\n");
    }
    return 0;
}


你可能感兴趣的:(ACM,TOJ)