这个代码的初始版本不是我写的,借鉴于https://paste.ubuntu.com/p/HTGdYC9Dbv/

这个题网上的代码基本上都是七八十分

代码如下,我加了详细的注释

//欧拉路径的判定  这个网址写的很详细   https://blog.csdn.net/u014298634/article/details/79248946#include <iostream>
#include <set>
#include <stack>
#include <cstring>
using namespace std;
const int N = 10000;
set<int> g[N + 1];          // set存储邻接表地图,之所以用set是因为set可以自动排序,这样就方便去找字典序最小的路径
stack<int> path;          // 用于保存路径
bool visited[N + 1][N + 1];//bool只占用一个字节,用int的百分百空间超限,学到了
int n, m;
//寻找字典序最小的,路径还没走过的下个节点
int next(int node) {for (set<int>::iterator it = g[node].begin(); it != g[node].end(); it++) {if (!visited[node][*it]) {return *it;}}return -1;
}
// 对于为什么可以非递归来写欧拉通路的路径   可以参考这个网址https://blog.csdn.net/mxYlulu/article/details/90740385
void  dfs(int node)
{stack<int> S;S.push(node);while (!S.empty()) {int u = S.top();int v = next(u);if (v != -1) {visited[u][v] = true;visited[v][u] = true;S.push(v);//有下一个点   下一个点放入s}else {S.pop();path.push(u);//没有下一个点   当前点放入path}}
}int main()
{int src, dest;// 输入数据cin >> n >> m;for (int i = 0; i<m; ++i) {cin >> src >> dest;g[src].insert(dest);g[dest].insert(src);}//计算每个点的出入度,看看是否具有欧拉通路int count = 0;for (int i = 1; i <= n; i++)if (g[i].size() % 2 == 1)count++;if (!(count == 0 || (count == 2 && g[1].size() % 2 == 1))){cout << "-1" << endl;return 0;}// 计算路径:从结点1开始深度优先搜索memset(visited, false, sizeof(visited));dfs(1);/**这里讲解一下,由于走过的路径不重复,所以path.size()-1就等于走过的边的数量如果走过的边数等于m,就说明这是个连通图,网上检验是否连通的代码太麻烦了,还得用并查集举个例子  五个点,四条边  :1 2相连  2 3相连  1 3相连  4 5相连   从1开始出发dfs之后,path里面存储的是 1 2 3 1,很明显   少遍历了一条边,所以这就是非连通的,输出-1当然   这里的连通指的是有边无法遍历到,并不是有点连通不到,如果只有一个点在整个图的外面,那是无所谓的**/if (path.size() == m + 1) {// 遍历了所有的边,输出结果int t;while (!path.empty()) {t = path.top();path.pop();cout << t << ' ';}cout << endl;}else// 输出结果:未找到路径cout << -1 << endl;return 0;
}

CCF 送货(满分代码)2015-12-4相关推荐

  1. CCF认证历年真题 满分代码(更新至2018年12月)

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

  2. CCF认证历年真题 满分代码

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

  3. CSP CCF 201709-2 公共钥匙盒(C++)满分代码,有注释

    问题描述 试题编号: 201709-2 试题名称: 公共钥匙盒 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共 ...

  4. CCF CSP认证历年真题 满分代码(持续更新中)

    目标 在接下来的半年到一年时间内,补全CCF认证历年真题(A-D)的满分代码(E题随缘). 考虑到CCF认证这个东西是可以混分的,我计划对D.E题额外增加部分分代码,或许有助于不同层次的选手备赛. 除 ...

  5. CCF CSP 2019-09-2 小明种苹果(续) 解题思路及满分代码(C++11)

    文章目录 问题描述 问题分析 满分代码 问题描述 问题分析 题目不难理解,求T(苹果的总数)和E(有苹果掉落的树的个数)也没什么难度,遍历数组进行判断就可以实现,这里略过(后面完整代码注释里会有). ...

  6. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  7. MIT JOS lab3保姆级试验记录,附满分代码

    操作系统Lab3 User environments 本次 lab 的目标是创建进程运行环境.在本实验中,(1)将实现运行受保护的用户模式环境(即"进程")所需的基本内核功能(2) ...

  8. CCF-CSP 201903-1 小中大(C++满分代码)

    201903-1 试题名称: 小中大 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 中位数:将数据排序后,位置在最中间的数值.当样本数为奇数时,中位数=第(N+1)/2个数据 ; 当样 ...

  9. CCF-CSP 201703-2 试题名称: 学生排队(满分代码)

    问题描述 试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到 ...

  10. OpenJudge[计算邮资]之满分代码

    OpenJudge[计算邮资]之满分代码 #include<iostream> #include<cmath> using namespace std; int main() ...

最新文章

  1. Vue 4.0——Vue与Bootstrap整合解决方案
  2. ProgressBar控件在Listview下的多线程应用(转自johngeng)
  3. Sharepoint Designer 2007 Workflow
  4. powershell 运行策略
  5. linux把root用户删了,linux root用户没法删除文件
  6. Windows forfiles(删除历史文件)
  7. Mac 被曝存在恶意漏洞:黑客可随意调动摄像头,波及四百万用户!
  8. 机器学习中的决策树算法
  9. k8s之根据tag发布spring boot项目
  10. 网络速度在线测试软件,在线网速测试(局域网速度测试工具)
  11. 《JavaScript权威指南第7版》第4章 表达式和运算符
  12. Netbean控制台程序中文输出乱码解决方案
  13. 调研报告之——可见光通信与可见光定位
  14. stata输出四分位、中位数的命令是什么?
  15. 陀螺仪、加速计和磁力计
  16. 算法创作|龟兔赛跑问题解决方法
  17. python中将字符变为大写_Python实现将字符串的首字母变为大写,其余都变为小写的方法...
  18. 大数据技术大致包含哪些内容
  19. 多属性决策的权重确定方法及matlab 程序
  20. 陶泓达:最新黄金,原油短线交易策略!

热门文章

  1. 228 Summary Ranges 汇总区间
  2. 【转】JMeter学习(二十八)内存溢出解决方法
  3. 关于项目中的封装、重构
  4. 拖动窗体FormBorderStyle属性为None的窗体移动
  5. 杂谈---2013年,总结?吐槽?灌水?
  6. SpringBoot配置swagger2(亲测有效,如果没有配置成功,欢迎在下方留言)
  7. 洛谷 P5089: CodeForces #500 (Div. 1) B / 1012B : Chemical table
  8. MyBatis学习总结_Mybatis查询之resultMap和resultType区别
  9. SpringMVC Hello(IDEA)
  10. 2017 Multi-University Training Contest - Team 6—HDU6098HDU6106HDU6103