SCU 4520 Euler 欧拉回路-程序员宅基地

技术标签: ui  

Euler
Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu
 

Description

Time Limit: 1000 MS              Memory Limit: 256 M


给出一幅n个点,m条边的图,分别判断该图是无向图和有向图条件下,是否存在欧拉通路。

输入

输入包含多组数据。第一行为一个整数T(1 ≤ T ≤ 100),代表数据组数,对于每组数据: 第一行是两个整数n和m( 1 ≤ n ≤ 500, 0 ≤ m ≤ n(n − 1)/2 ),分别代表图上点的个数和边的个数。
然后是m行,每行两个整数uivi ( 1 ≤ ui, vi ≤ n, ui ≠ vi ),代表图上的一条边所连接的两个点。输入保证没有重边。

输出

首先判断:如果这幅图是无向图,是否存在欧拉通路;
其次判断:如果这幅图是有向图,是否存在欧拉通路。
对于每个判断,如果存在,输出"Yes",否则输出"No"(不包括引号)。两个判断间用空格隔开。

样例输入

3

2 1
1 2

4 3
1 2
1 3
1 4

4 4
1 2
1 3
1 4
2 3

样例输出

Yes Yes
No No
Yes No

Hint

欧拉通路、欧拉回路、欧拉图
无向图
1) 设 G 是连通无向图,则称经过 G 的每条边一次并且仅一次的路径为欧拉通路;
2) 如果欧拉通路是回路 (起点和终点是同一个顶点), 则称此回路为欧拉回路 (Euler circuit);
3) 具有欧拉回路的无向图 G 称为欧拉图(Euler graph)。
有向图
1) 设 D 是有向图, D 的基图连通,则称经过 D 的每条边一次并且仅一次的有向路径为有向欧拉通路;
2) 如果有向欧拉通路是有向回路,则称此有向回路为有向欧拉回路(directed Euler circuit);
3) 具有有向欧拉回路的有向图 D 称为有向欧拉图(directed Euler graph)。

Extend

欧拉回路打印路径算法:Fleury(佛罗莱)算法

Author

GooZy

 

用度数就能做出来

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <iomanip>
#include <math.h>
#include <map>
using namespace std;
#define FIN     freopen("input.txt","r",stdin);
#define FOUT    freopen("output.txt","w",stdout);
#define INF     0x3f3f3f3f
#define lson    l,m,rt<<1
#define rson    m+1,r,rt<<1|1
typedef long long LL;

const int MAXN=1000+5;

int DU[MAXN];
int IN[MAXN],OUT[MAXN];
int n,m,sz;
int father[MAXN];

void edge_init(){
   memset(DU,0,sizeof(DU));
   memset(IN,0,sizeof(IN));
   memset(OUT,0,sizeof(OUT));
   for(int i=1;i<=n;i++){
       father[i]=i;
   }
}


int Find(int x){
    if(x!=father[x]){
        father[x]=Find(father[x]);
    }
    return father[x];
}

int main()
{
    //FIN
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        edge_init();
        int sum=n;
        for(int i=1;i<=m;i++){
            int u,v;
            scanf("%d%d",&u,&v);
            DU[u]++;
            DU[v]++;
            IN[v]++;
            OUT[u]++;
            int root1=Find(u);
            int root2=Find(v);
            if(root1!=root2){
                father[root2]=root1;
                sum--;
            }

        }
        if(sum!=1){
            printf("No No\n");
            continue;
        }

        int cnt=0;
        for(int i=1;i<=n;i++){
            if(DU[i]%2==1)  cnt++;
        }
        if(cnt==0||cnt==2)  printf("Yes");
        else  printf("No");

        bool flag=1;
            int fir=0, sec=0;
            for (int i=1;i<=n;i++) {
                if(IN[i]!=OUT[i]){
                    if(!fir&&IN[i]-OUT[i]==1)fir=1;
                    else if(!sec&&IN[i]-OUT[i]==-1){
                        sec=1;
                    }else{
                        flag=0;
                    }
                }
            }
            if (flag) printf(" Yes\n");
            else printf(" No\n");


    }
    return 0;
}

  

 

转载于:https://www.cnblogs.com/Hyouka/p/5751240.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30545285/article/details/97059782

智能推荐

python出现syntaxerror_python 报错syntaxerror怎么解决-程序员宅基地

文章浏览阅读1.7k次。Python中的SyntaxError错误是常见Python语言异常错误类型中的一种,表示语法错误,一般是代码出现错误才会报SyntaxError错误。下面示例是SyntaxError被引发,并告知了检测到的错误异常位置:>>> priint 'www.iplaypy.com'File "", line 1priint 'www.iplaypy.com'^SyntaxError: invalid ..._syntax = "proto3"; 转化为python后会出现报错 未解析的引用 '_locsourcetype

探索D3.js插件库:一个数据可视化的强大工具集合-程序员宅基地

文章浏览阅读390次,点赞4次,收藏10次。探索D3.js插件库:一个数据可视化的强大工具集合项目地址:https://gitcode.com/d3/d3-plugins简介D3.js 是一种广泛使用的JavaScript库,用于创建动态、交互式的数据可视化。而GitCode上的D3 Plugins集合则是一个汇聚了各种D3扩展和插件的宝库,为开发者提供了更加丰富的功能和灵活性,以满足多样化的数据可视化需求。技术分析D3.js的核..._数据可视化插件js

华为云耀云服务器L实例 - bookstore项目(3)-程序员宅基地

文章浏览阅读34次。一旦成功连接到数据库服务器,在Navicat的界面中,您将看到数据库服务器上的数据库列表。授予 root 用户对 MySQL 服务器中所有数据库和表的所有权限,并能够从任何主机 ( '%') 进行连接。:在Navicat中,单击"连接"(或类似的按钮)以创建一个新的数据库连接。:在Navicat的界面中,检查数据库列表中是否已显示您刚刚创建的新数据库。:单击"测试连接"按钮,以确保连接参数正确,并成功连接到远程数据库服务器。:通过单击"连接"按钮,连接到远程数据库服务器。

matlab求能控标准型函数,实验三 利用Matlab分析能控性和能观性-程序员宅基地

文章浏览阅读5.3k次。实验三利用Matlab分析能控性和能观性实验目的:熟练掌握利用Matlab中相关函数分析系统能控能观性、求取两种标准型、系统的结构分解的方法。实验内容:1、能控性与能观性分析中常用的有关Matlab函数有:Size(a,b) 获取矩阵的行和列的数目Ctrb(a,b) 求取系统能控性判别矩阵Obsv(a,c) 求取能观性判别矩阵Rank(t) 求取矩阵的秩Inv(t) 求矩阵的逆[abar,bbar..._试在matlab中对如下系统(a)进行能控性分解,系统(b) 进行能观性分解

LeetCode菜鸟之路—第一题C++_leetcode第一题完整代码-程序员宅基地

文章浏览阅读461次。LeetCode_leetcode第一题完整代码

java.net.SocketException: Connection reset 异常处理-程序员宅基地

文章浏览阅读1w次。场景描述:客户端通过socket访问远程服务器,执行命令时抛异常, java.net.SocketException: Connection reset 分析:使用socket访问服务端数据时,当服务端认为已经返回全部的结果后,会主动关闭socket,此时客户端再从socket读数据会抛异常。 处理办法:1.客户端可准确识别返回内容结束标志时,读取全部数据后主动关闭连接。2...._java.net.socketexception: connection reset

随便推点

一个程序猿眼中的国内主流地图api_api中国地图-程序员宅基地

文章浏览阅读2.7w次,点赞2次,收藏16次。在网站或者手机应用中,经常用到地图api。在现在这么激烈的竞争下,各地图服务提供的服务基本都趋于一致了。一个公司推出的新服务,其他公司肯定也会很快的跟进。这样,对于开发者来说,地图api的选择就主要参考api的易用程度、地图效果等因素了,在此仅做一汇总比对:1、google地图:地图效果截图:官方地图效果:http://ditu.google.cn/maps官方api:https:_api中国地图

(ZJU-2006复试)-HDOJ-1235-统计同成绩学生人数-程序员宅基地

文章浏览阅读996次。统计同成绩学生人数Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4399 Accepted Submission(s): 2543Problem Description读入N名学生的成绩,将获得某一给定分数的学生人数

【注意】宽泛负载!-程序员宅基地

文章浏览阅读1.1k次,点赞22次,收藏10次。直流感应方法很简单,就是安放一个与负载(分流电阻器)串联的电阻器,然后测量整个电阻器的电压(分流电压)。图 7 所示的是用于10μA-10mA 单电源电流感应解决方案的TI 高精度设计。将INA326的独特性与控制其增益的开关相结合,可实现优异的单电源电流感应解决方案,其可检测达 30 倍频程的负载电流。对数放大器和可编程增益放大器是一个选项,但如果需要测量的只是 20 至 30 倍频程的负载电流,就有点过度了。为克服该问题,INA326仪表放大器可使用独特的电流拓扑提供真正的轨至轨输入输出。

深度学习 Day21——J1ResNet-50算法实战与解析-程序员宅基地

文章浏览阅读1.1k次,点赞18次,收藏31次。关键字:CNN算法发展,残差网络介绍,Resnet50, softmax及它的实现原理, pytorch实现Resnet50算法

二分类变量相关性分析spss_SPSS教程 | 两个有序分类变量的相关分析及SPSS操作-程序员宅基地

文章浏览阅读2.8k次。案例来源:中华护理杂志2018年3期一.案例2型糖尿病(T2DM)患者授权能力与医疗支持的相关性研究。方法:通过单纯随机抽样选取2016年1月—4月某省市8所三级甲等综合医院就诊2型糖尿病患者作为研究对象。采用一般资料调查表、糖尿病授权评分表糖尿病态度、期望、需求简化版(DES-DSF)和患者慢性病评估量表糖尿病态度、期望、需求简化版(PACIC-DSF),调查2型糖尿病患者的一般资料、授权能力及..._二分类变量和量表题的相关性

Windows 找不到文件‘chrome‘。请确定文件名是否正确后,再试一次_windows找不到文件chrome.请确定文件名是否正确-程序员宅基地

文章浏览阅读7.5k次,点赞3次,收藏12次。Windows 找不到文件‘chrome‘。请确定文件名是否正确后,再试一次_windows找不到文件chrome.请确定文件名是否正确

推荐文章

热门文章

相关标签