链接:https://www.nowcoder.com/acm/contest/86/D
来源:牛客网

题目描述

震为雷,临危不乱,亨通畅达;巽为风,柔顺伸展,厚载万物。
震卦:洊雷,震,君子以恐惧修省。一口金钟在淤泥,人人拿着当玩石,忽然一日钟悬起,响亮一声天下知。
巽卦:随风,巽,君子以申命行事。一叶孤舟落沙滩,有篙无水进退难,时逢大雨江湖溢,不用费力任往返。

算卦先生来问你,对于每个他给出的无向图,是否存在一条路径能够经过所有边恰好一次,并且经过所有点?不需要满足最后回到起点。

输入描述:

第一行一个数 

 ,表示有 

 组数据。对与每组数据,第一行有两个数 

,接下去 

 行每行两个数 

 描述一条无向边 

。图不保证联通。

输出描述:

对于每组数据,如果存在,输出 

 ,否则输出 

 。 

输入例子:
2
2 2
1 1
2 1
4 6
1 3
1 4
1 2
3 2
4 2
4 3
输出例子:
Zhen
Xun

-->

示例1

输入

复制

2
2 2
1 1
2 1
4 6
1 3
1 4
1 2
3 2
4 2
4 3

输出

复制

Zhen
Xun

备注:



 
思路;
1. 使用 欧拉图的充要条件,即 连通图存在欧拉回路当且仅当每个顶点的度为偶数。
连通图存在欧拉通路当且仅当存在 0个或2个 奇度顶点
2. 如果不是连通图则不存在题目中的路径,判断连通图有很多方法,例如 并查集,DFS,BFS,传递闭包等 传送门,本体使用了 dfs
 
AC码:
 
 #include <iostream>
#include <cstring>
using namespace std;
int mapp[][],vis[],sum[];
int n,m;
void dfs(int v){
vis[v]=;
for(int i=;i<=n;i++){
if(mapp[v][i] && !vis[i])
dfs(i);
}
}
int main(){
int t;
cin>>t;
while(t--){
memset(mapp,,sizeof(mapp));
memset(vis,,sizeof(vis));
memset(sum,,sizeof(sum));
cin>>n>>m;
int u,v;
for(int i=;i<m;i++){
cin>>u>>v;
mapp[u][v]=mapp[v][u]=;
//计算顶点的度
sum[u]++;sum[v]++;
}
dfs();
bool flag = false;
//判断是否连通
for(int i=;i<=n;i++)
if(!vis[i]){
flag = true;
break;
}
if(flag)
cout<<"Xun"<<endl;
else{
int cnt=;
//统计奇数定点的个数,如果是 0 || 2 那么就存在欧拉通路
for(int i=;i<=n;i++)
if(sum[i]&)
cnt++;
if(cnt== || cnt==)
cout<<"Zhen"<<endl;
else
cout<<"Xun"<<endl;
}
}
return ;
}

牛客小白月赛2 D 虚虚实实 【欧拉图】【连通图】的更多相关文章

  1. 牛客网 牛客小白月赛2 D.虚虚实实-无向图判欧拉路径

    D.虚虚实实 链接:https://www.nowcoder.com/acm/contest/86/D     这个题是无向图判欧拉路径,首先要判是否连通,然后再判欧拉路径就可以,板子题. 板子来源: ...

  2. 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花

    求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...

  3. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  4. 牛客小白月赛8 - E - 诡异数字 数位DP

    牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...

  5. 牛客小白月赛18 Forsaken给学生分组

    牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 ​ Forsaken有 ...

  6. 牛客小白月赛18 Forsaken喜欢数论

    牛客小白月赛18 Forsaken喜欢数论 题目传送门直接点标题 ​ Forsaken有一个有趣的数论函数.对于任意一个数xxx,f(x)f(x)f(x)会返回xxx的最小质因子.如果这个数没有最小质 ...

  7. 牛客小白月赛19 E 「火」烈火燎原 (思维,树)

    牛客小白月赛19 E 「火」烈火燎原 (思维,树) 链接:https://ac.nowcoder.com/acm/contest/2272/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  8. 【牛客小白月赛21】NC201604 Audio

    [牛客小白月赛21]NC201604 Audio 题目链接 题目大意: 给出三点 ,求到三点距离相等的点 的坐标. 解析 考点:计算几何基础. 初中蒟蒻表示不会什么法向量.高斯消元..qwq 方法一: ...

  9. 【牛客小白月赛21】NC201605 Bits

    [牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...

随机推荐

  1. stm32 外部中断学习

    今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...

  2. pat1080. Graduate Admission (30)

    1080. Graduate Admission (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...

  3. windows无法通过installer安装SVN

    1.当你的电脑是windows xp操作系统的时候在安装TortoiseSVN1.8**版本的时候会出现如下问题造成不能完成安装: 出现“无法通过windowsinstaller服务安装此安装程序包. ...

  4. [转]JAVA Iterator 的用法

    java.util包中包含了一系列重要的集合类.本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕. 下面我们先简单讨论一个根接口Collection,然后分析一 ...

  5. REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)

    现在,越来越多的 Web 应用转向了 RESTful 的架构,很多产品和应用暴露给用户的往往就是一组 REST API,这样有一个好处,用户可以根据需要,调用不同的 API,整合出自己的应用出来.从这 ...

  6. 浅析sorted函数中的key

    在python编程中,常对数据进行各种处理,排序尤为重要.但是在使用sorted内置函数时,我们发现它有三个参数. 第一个参数为可迭代数据,可以为一个字符串,数组,列表等等. 第三个为是否倒置输出. ...

  7. vue 钩子函数

    beforeRouteEnter 方法名称: beforeRouteEnter 调用时机: 切换路由之前,调用该方法时,页面还没有切换 next调用时机: activated 之后 注意事项: thi ...

  8. linux 封禁ip

    可以直接服务配置nginx.conf 添加 deny+IP 例如: 封禁单个IP deny 106.5.76.83; #封整个段即从123.0.0.1到123.255.255.254的命令deny 1 ...

  9. chrom锚点不能跳转的问题

    最近做一调查页,对没有选择的问题做定位和提示,谷歌下定位不能跳转,解决方法: window.location.hash = 锚点: window.location = window.location;

  10. SQL varchar转float实现数字比较

    select * from table where cast('经纬度' as float ) < 90