hdu1878(判断欧拉图)

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1878

题目分析:

一个图是欧拉图的充要条件是这个图是连通的而且每个点的度为偶数

代码如下:

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

const int maxn =1010;

int par[maxn];
int num[maxn],pp[maxn];
void init()
{
    for(int i=0;i<maxn;i++)
        par[i]=i,num[i]=0,pp[i]=1;
}

int find_par(int x)
{
    if(par[x]!=x)
        par[x]=find_par(par[x]);
    return par[x];
}

void Union(int x,int y)
{
    x=find_par(x);
    y=find_par(y);
    if(x!=y){
        par[x]=y;
        pp[y]+=pp[x];
    }
}

int main()
{
    int n,m,a,b;
    while(~scanf("%d",&n)){
        if(n==0) break;
        scanf("%d",&m);
        init();
        for(int i=0;i<m;i++){
            scanf("%d%d",&a,&b);
            num[a]++,num[b]++;
            Union(a,b);
        }
        bool f=0,g=1;
        for(int i=1;i<=n;i++){
            if(num[i]&1) f=1;
            if(pp[i]==n) g=0;
        }
        if(f||g) puts("0");
        else puts("1");
    }
    return 0;
}
时间: 2024-10-28 14:30:50

hdu1878(判断欧拉图)的相关文章

HDU-1878 判断无向图欧拉回路,水

HDU 1878 题意:问一个无向图是否存在欧拉回路. 总结: 1.一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图.2.一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图.3.要判断一个混合图G(V,E)(既有有向边又有无向边)是欧拉图,方法如下:假设有一张图有向图G',在不论方向的情况下它与G同构.并且G'包含了G的所有有向边.那么如果存在一个图G'使得G'存在欧拉回路,那么G就存在欧拉回路. // HDU-1878 #include<bits/stdc++

POJ1637-Sightseeing tour/HDU-3472-HS BDC-最大流Dinic+判断混合图的欧拉图

前置知识: 混合图:一幅图中既有单向边,又有双向边. 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要用到网络流这个算法!!! 有向图的欧拉回路的条件:所有的节点出度等于入度. 下面这两题基本差不多,但是建边啊.判断欧拉图啊等还是有区别的. 总之最后都是需要判断是否为满流,如果为满流则说明是欧拉回路. 注意: 1.tot初始化为-1,因为在进行反向边的时候通过异或是01.23.45....这样为一组的. if(di>0) { e[i].flow-=di; e[i^1].flow+=

计蒜客 | 欧拉回图 | 判断欧拉回路

你学过一笔画问题么?其实一笔画问题又叫欧拉回路,是指在画的过程中,笔不离开纸,且图中每条边仅画一次,而且可以回到起点的一条回路. 蒜头君打算考考你,给你一个图,问是否存在欧拉回路? 输入格式 第 11 行输入两个正整数,分别是节点数 N(1 < N < 1000)N(1<N<1000) 和边数 M(1 < M < 100000)M(1<M<100000): 紧接着 MM 行对应 MM 条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从 1

CodeForces 358E - Dima and Kicks

dfs判断欧拉图,红名选手的代码就是炫酷. 首先统计所有点的度数总和,而后对于这张图的特殊性--每个点最多只会有四条边,来标记当前边是否走过了. 若在一次DFS中,能遍历所有的节点则输出所有边长的gcd的大于1的约数集. 真心学习了. #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include &

POJ 1386 Play on Words(欧拉图的判断)

Play on Words Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11838   Accepted: 4048 Description Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve it to open that doors. Because ther

NOJ--1064--用STL来实现半欧拉图的判断

顺便当作介绍 最萌Oj---nbut 这应该算我的第一篇 写题目 主要好累 不想做新题目 而且这题也是蛮有价值的 戳我 好吧  个人还是更喜欢苹果 对棒子的产品无爱 ----话外音 题目大意:就是每一行 给你一条线段的2个点 它的2个端点由4个数字 即x y  x1 y1来表示 一共给你N行 我们就来判断下能不能用一笔画完成 它相比于以往 我遇见过的欧拉问题  只是麻烦在 需要用一个结构体来存储点的坐标  这也应该是这题的难点了 起初 我想用一个hash映射来完成 这样就会省事很多 .....

POJ 1300 Door Man(判断能否构成欧拉图)

题目描述: 你是一座大庄园的管家.庄园有很多房间,编号为 0.1.2.3,....你的主人是一个心不在 焉的人,经常沿着走廊随意地把房间的门打开.多年来,你掌握了一个诀窍:沿着一个通道,穿 过这些大房间,并把房门关上.你的问题是能否找到一条路径经过所有开着门的房间,并使得: 1) 通过门后立即把门关上: 2) 关上了的门不再打开: 3) 后回到你自己的房间(房间 0),并且所有的门都已经关闭了. 在本题中,给定房间列表,及连通房间的.开着的门,并给定一个起始房间,判断是否存在 这样的一条路径.不

poj2513——判断是否为欧拉图(并查集,trie树)

POJ 2513    Colored Sticks 欧拉回路判定,并查集,trie树 Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 31621   Accepted: 8370 Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possibl

HDU 3472 HS BDC(混合欧拉图(使用最大流))模板

HS BDC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 980    Accepted Submission(s): 398 Problem Description IELTS is around the corner! love8909 has registered for the exam, but he still hasn