博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyist 42 一笔画 (欧拉回路 + 并查集)
阅读量:6277 次
发布时间:2019-06-22

本文共 2189 字,大约阅读时间需要 7 分钟。

 

分析:

若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。

若该路径是一个圈,则称为欧拉(Euler)回路。 具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。

先说一下欧拉路径、欧拉回路的充要条件:

1.无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数);

2.无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点;

3.有向连通图D是欧拉图,当且仅当该图为连通图且D中每个结点的入度=出度

4.有向连通图D含有欧拉通路,当且仅当该图为连通图且D中除两个结点外,其余每个结点的入度=出度,且此两点满足deg-(u)-deg+(v)=±1。(起始点s的入度=出度-1,结束点t的出度=入度-1 或两个点的入度=出度)

5.一个非平凡连通图是欧拉图当且仅当它的每条边属于奇数个环。

而我们这道题一笔画, 正是要经过图中的每条边一次。 也就是说我们判断一下所个图是否存在欧拉路径就可以啦。

首先求图是否连通(判断连通我们用并查集就好啦, 简单、易懂),

再判断图是否存在欧拉路径(所有点度数为偶数或者只有两个点度数为奇数,其它均为偶数)。

还有注意输出的是 Yes / No

 

#include
#include
#include
#include
#include
using namespace std;int t, n, m, sum, pre[1010], du[1010], v[1010][1010];int find(int x){ int i, j, r; i = x; r = x; while(r != pre[r]) r = pre[r]; while(pre[i] != r) { j = pre[i]; pre[i] = r; i = j; } return pre[x];}int main(){ cin >> t; while(t--) { scanf("%d%d", &n, &m); memset(v, 0, sizeof(v)); memset(du, 0, sizeof(du)); for(int i = 1; i <= n; i++) pre[i] = i; for(int i = 1; i <= m; i++) { int x, y; scanf("%d%d", &x, &y); int fx = find(x); int fy = find(y); if(fx != fy) pre[fx] = fy; if(v[x][y] == 0) { v[x][y] = 1; v[y][x] = 1; du[x]++;//记录度数 du[y]++; } } int ans = find(1); int flag = 1; for(int i = 2; i <= n; i++)// 判断是否是连通图 { int fx = find(i); if(fx != ans) { flag = 0; break; } } sum = 0; if(flag == 1) { for(int i = 1; i <= n; i++)// 若是连通图, 再判断节点度数为奇数共有几个 { if(du[i] % 2 == 1) sum++; } if(sum == 0 || sum == 2) printf("Yes\n"); else printf("No\n"); } else printf("No\n"); } return 0;}

 

转载于:https://www.cnblogs.com/wd-one/p/4539336.html

你可能感兴趣的文章
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一第1章 创业梦想,怎样起步...
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
《Exchange Server 2010 SP1/SP2管理实践》——2.4 部署外部网络环境
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>