当前位置: 首页 > news >正文

Play on Words(UVA 10129)

网址如下:

Play on Words - UVA 10129 - Virtual Judge (vjudge.net)

(第三方网站)

一道关于有向欧拉回路的题,其中字母为节点,单词为道路

满足存在欧拉回路的条件有两个:

1,最多有两个奇点(入度和出度不相同的点),同时入度和出度的绝对值相差不能超过1

2,所有节点在不管方向的时候连通

对于第一个条件,只要统计计算就可以了

对于第二个条件,bfs和dfs都可以

代码如下:

#include<cstdio>
#include<cstring>
#include<set>
#include<queue>
#include<cmath>
void scanf_input(void);
bool bfs(void);
int indegree[26], outdegree[26];
std::set<int> cnt1, cnt2;
bool G[26][26];int main(void)
{int kase; scanf("%d", &kase);while(kase--){memset(indegree, 0, sizeof(indegree));memset(outdegree, 0, sizeof(outdegree));memset(G, 0, sizeof(G));int n; scanf("%d", &n); getchar();for(int i = 0; i < n; i++)scanf_input();//判断出入度int sig = 0; bool is_judge = true;for(int i = 0; i < 26; i++)if(indegree[i] != outdegree[i])if(++sig > 2 || abs(indegree[i] - outdegree[i]) > 1){printf("The door cannot be opened.\n"); is_judge = false; break;}if(!is_judge) continue;//判断是否连通cnt1.clear(); cnt2.clear();for(int i = 0; i < 26; i++) if(indegree[i] || outdegree[i]) cnt1.insert(i);if(bfs()) printf("Ordering is possible.\n");else printf("The door cannot be opened.\n");}
}
void scanf_input(void)
{char fc = getchar(), bc;int u = fc -'a', v; outdegree[u]++;do{bc = fc; fc = getchar();}while(fc != '\n');v = bc - 'a'; indegree[v]++;G[u][v] = G[v][u] = true;
}
bool bfs(void)
{int u = 0; while(!indegree[u] && !outdegree[u]) u++;std::queue<int> q;q.push(u); cnt2.insert(u);while(!q.empty()){u = q.front(); q.pop();for(int v = 0; v < 26; v++)if(G[u][v]){G[u][v] = G[v][u] = false; cnt2.insert(v); q.push(v);}}if(cnt1 == cnt2) return true;else return false;
}

我这里是用了bfs来判断是否连通

一点废话:

今天翘掉了两节课,使得今天成为工作日中最轻松的一天,只有一节高代课,至于那两节课嘛。。。我听说乡村振兴概论课已经人少到一眼看出一堆人翘课了,至于下午的中国近现代史纲要嘛。。。这才刚上课11分钟,我也不到,但愿不会点名吧

等会把欧拉回路总结一下吧

相关文章:

  • java获取数据库信息为空解决方案
  • 一、初识 Web3
  • 【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷
  • html5cssjs代码 036 CSS默认值
  • sentinel系统规则
  • CentOS 8 中安装与配置 MySQL
  • mac下Appuim环境安装-持续更新中
  • 航空实时监控
  • flask+ flask_socketio HTTP/1.1“ 400 公网IP 问题解决方案
  • 九、C#桶排序算法
  • 嵌入式相机WEB,用C直接处理?
  • Java项目基于Docker打包发布
  • npm ERR! code ELIFECYCLE 解决办法
  • MAC本安装telnet
  • 机器学习——决策树(四)后剪枝
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • linux安装openssl、swoole等扩展的具体步骤
  • mysql 5.6 原生Online DDL解析
  • SpriteKit 技巧之添加背景图片
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 后端_ThinkPHP5
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于axios的vue插件,让http请求更简单
  • 聊一聊前端的监控
  • 排序(1):冒泡排序
  • 微信小程序:实现悬浮返回和分享按钮
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 06-01 点餐小程序前台界面搭建
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $$$$GB2312-80区位编码表$$$$
  • (5)STL算法之复制
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C++17) std算法之执行策略 execution
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java数据结构)ArrayList
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转)http-server应用
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .aanva
  • .CSS-hover 的解释
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net Core与存储过程(一)
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET MVC第三章、三种传值方式
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET开发者必备的11款免费工具
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /bin/bash^M: bad interpreter: No such file or directory
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ::前边啥也没有
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记