1. #include<iostream>
  2. #include<vector>
  3. #include<algorithm>
  4. #include<stack>
  5. #define N 10010
  6. using namespace std;
  7.  
  8. vector<long int> head[N];
  9. stack<long int> way;
  10. long int n;
  11. bool visited[N][N];
  12. bool vis[N];
  13. long long int d[N];
  14.  
  15. void addEdge(long int x,long int y) {
  16. head[x].push_back(y);
  17. head[y].push_back(x);
  18. d[x]++;
  19. d[y]++;
  20. }
  21.  
  22. void dfs(int u) {
  23. vis[u]=;
  24. vector<long int>::iterator pos;
  25. for(pos=head[u].begin(); pos!=head[u].end(); pos++) {
  26. long int v=*pos;
  27. if(!vis[v]) {
  28. dfs(v);
  29. }
  30. }
  31.  
  32. }
  33.  
  34. void euler(long int u) {
  35. vector<long int>::iterator pos;
  36. //利用dfs的方法遍历所有的边
  37. for(pos=head[u].begin(); pos!=head[u].end(); pos++) {
  38. long int v=*pos;
  39. if(!visited[u][v]) {
  40. visited[u][v]=visited[v][u]=;
  41. //我这里不用栈,而是在进行下一个点之前就把当前点输出,样例是过了,可是交上去只能得10分
  42. //cout<<' '<<v;
  43. euler(v);
  44. //用栈的话就没问题,可以得90分。
  45. way.push(v);
  46. }
  47. }
  48. }
  49.  
  50. int main() {
  51. long long int m;
  52. cin>>n>>m ;
  53. while(m--) {
  54. long int x,y;
  55. cin>>x>>y;
  56. addEdge(x,y);
  57. }
  58. //以前总是得90分的原因就是没有考虑图不连通的情况
  59. //这里从第一个点出发dfs所有的点,最后检验即可
  60. dfs();
  61. bool flag=;
  62. for(int i=; i<=n; i++)
  63. if(vis[i]==) {
  64. flag=;
  65. break;
  66. }
  67. //如果是不连通的,直接输出-1
  68. if(flag==) cout<<-;
  69. else {
  70. long long int odd_num=;
  71. for(long int i=; i<=n; i++) {
  72. sort(head[i].begin(),head[i].end());
  73. if(d[i]%)
  74. odd_num++;
  75. }
  76. if(odd_num>)
  77. cout<<-;
  78. else {
  79. cout<<;
  80. euler();
  81. while(!way.empty()) {
  82. cout<<' '<<way.top();
  83. way.pop();
  84. }
  85. }
  86. }
  87.  
  88. return ;
  89. }

CCF第四题无向图打印路径 欧拉问题的更多相关文章

  1. CCF第四题无向图打印路径

    #include<iostream> #include<vector> #include<algorithm> #include<stack> #def ...

  2. 第十三次CCF第四题 1803——04 博弈

    我又写了一个简洁版的2.0: 可以作为博弈搜索树的模板  : https://www.cnblogs.com/xidian-mao/p/9389974.html 废话ps: 开始觉得这是一道简单得博弈 ...

  3. 【刷题】BZOJ 4805 欧拉函数求和

    Description 给出一个数字N,求sigma(phi(i)),1<=i<=N Input 正整数N.N<=2*10^9 Output 输出答案. Sample Input 1 ...

  4. 通过欧拉计划学Rust编程(第54题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...

  5. HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化

    分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...

  6. Nyoj42 一笔画问题 (欧拉道路)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=42题目链接 #include <cstdio> #include <cstring ...

  7. poj2480(利用欧拉函数的积性求解)

    题目链接: http://poj.org/problem?id=2480 题意:∑gcd(i, N) 1<=i <=N,就这个公式,给你一个n,让你求sum=gcd(1,n)+gcd(2, ...

  8. 欧拉函数 牛客寒假1 小a与黄金街道

    题目链接 分析:这题用到了欧拉函数, 欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 详细可以看看这篇博文https://www.cnblogs.com/linyujun/p ...

  9. hdu1286 找新朋友 欧拉函数模板

    首先这一题用的是欧拉函数!!函数!!不是什么欧拉公式!! 欧拉函数求的就是题目要求的数. 关于欧拉函数的模板网上百度一下到处都是,原理也容易找,这里要介绍一下另一个强势模板. 在这一题的讨论里看到的. ...

随机推荐

  1. js进阶之闭包

    1.首先说下什么是闭包,闭:封闭,包:就像我们的包包~:虽然我在扯淡但是也有其道理咯,闭包就有点像java里面的封装一样,包属性和方法都封装到对象内部,在外部通过共有的get.set方法获取或者设置其 ...

  2. jsp另外五大内置对象之-exception

    //有异常的页面 <%@ page language="java" contentType="text/html; charset=utf-8" page ...

  3. POJ 3311 Hie with the Pie (状压DP)

    题意: 每个点都可以走多次的TSP问题:有n个点(n<=11),从点1出发,经过其他所有点至少1次,并回到原点1,使得路程最短是多少? 思路: 同HDU 5418 VICTOR AND WORL ...

  4. HDU 3709 Balanced Number (数位DP)

    题意: 找出区间内平衡数的个数,所谓的平衡数,就是以这个数字的某一位为支点,另外两边的数字大小乘以力矩之和相等,即为平衡数. 思路: 一开始以为需要枚举位数,枚举前缀和,枚举后缀和,一旦枚举起来就会M ...

  5. python实现单链表翻转

    题目描述: 翻转一个链表 您在真实的面试中是否遇到过这个题? Yes 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑 ...

  6. springboot 修改文件上传大小限制

    springboot 1.5.9文件上传大小限制spring:http:multipart:maxFileSize:50MbmaxRequestSize:50Mb springboot 2.0文件上传 ...

  7. ovx openVirtex的阅读文档

    由于flowvisor只有4个版本, 最新更新都是2013年的, 跟底层ovs版本不跟进, 最近斯坦福post一个 ovx, 猜测是flowvisor的加强版, 所以看一下文档说明 文档详见http: ...

  8. POP简单动画简单使用 (入门级别)

    动画可以让APP“更友好”的与用户交互,苹果提供很多的好看的动画供开发者使用,不过简单的平移.旋转.缩放.......使用起来很简单,但是想要进行一些比较复杂的动画效果,使用起来就比较难以实现,俗话说 ...

  9. iOS重绘机制drawRect

    iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动 ...

  10. 基于idea创建Tomcat远程调试

    编辑完catalina文件后重启tomcat