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

P7771 【模板】欧拉路径

网址如下:

P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

忘掉了输出欧拉回路的方法,搞了我好久

关于欧拉回路的知识可以看我之前的博客:

一点关于欧拉回路的总结-CSDN博客

代码如下:

#include<queue>
#include<stack>
#include<cstdio>
#include<cmath>
using namespace std;const int maxn = 100001;struct Node{priority_queue<int, vector<int>, greater<int>> q;int indegree, outdegree;Node():indegree(0), outdegree(0){}
}node[maxn];int n;
stack<int> st;int judge(void){int cnt = 0, u = 1;for(int i = 1; i <= n; i++){if(node[i].outdegree != node[i].indegree){cnt++;if(cnt > 2 || abs(node[i].outdegree - node[i].indegree) >= 2) return -1;if(node[i].outdegree - node[i].indegree == 1) u = i;}}return u;
}
void dfs(int u){while(!node[u].q.empty()){int v = node[u].q.top();node[u].q.pop();dfs(v);}st.push(u);
}int main(void)
{int m;//输入scanf("%d%d", &n, &m);while(m--){int u, v;scanf("%d%d", &u, &v);node[u].outdegree++; node[v].indegree++;node[u].q.push(v);}//处理int u = judge();if(u == -1) printf("No");else{dfs(u);while(!st.empty()) printf("%d ",st.top()),st.pop();}return 0;
}

可以看看一开始我写的错误代码(对欧拉回路理解不够深造成的):

#include<queue>
#include<cstdio>
#include<cmath>
using namespace std;const int maxn = 100001;struct Node{priority_queue<int, vector<int>, greater<int>> q;int indegree, outdegree;Node():indegree(0), outdegree(0){}
}node[maxn];int n;int judge(void){int cnt = 0, u = 1;for(int i = 1; i <= n; i++){if(node[i].outdegree != node[i].indegree){cnt++;if(cnt > 2 || abs(node[i].outdegree - node[i].indegree) >= 2) return -1;if(node[i].outdegree - node[i].indegree == 1) u = i;}}return u;
}int main(void)
{int m;//输入scanf("%d%d", &n, &m);while(m--){int u, v;scanf("%d%d", &u, &v);node[u].outdegree++; node[v].indegree++;node[u].q.push(v);}//处理int u = judge();if(u == -1) printf("No");else{printf("%d", u);while(!node[u].q.empty()){int v = node[u].q.top(); node[u].q.pop();printf(" %d", v);u = v; }}return 0;
}

http://www.lryc.cn/news/382105.html

相关文章:

  • 卷积神经网络(CNN)理解
  • Databend 开源周报第 149 期
  • Hue Hadoop 图形化用户界面 BYD
  • 【经验分享】RT600 serial boot mode测试
  • 七种不同类型测宽仪技术参数 看看哪种能用于您的产线?
  • 【GO】rotatelogs库和sirupsen/logrus库实现日志功能的实践用例
  • Arc2Face - 一张图生成逼真的多风格人脸,本地一键整合包下载
  • swiper 幻灯片
  • Ubuntu 使用Vscode的一些技巧 ROS
  • JS中的三种事件模型
  • 南京邮电大学计算机网络实验二(网络路由器配置RIP协议)
  • 仓颉语言的编译和构建
  • 网络基础-协议
  • 电子设备抗震等级与电子设备震动实验
  • 你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!
  • 未来已来!GPT-5震撼登场,工作与生活面临新变革!
  • 洗地机选购指南,什么品牌最值得购买?2024四大口碑品牌推荐
  • 住宅IP与普通IP的区别
  • 【Java】线程池技术(三)ThreadPoolExecutor 状态与运行源码解析
  • vscode使用内置插件断点调试vue2项目
  • centos7 低版本docker 升级为高版本
  • 了解SD-WAN与传统WAN的区别
  • 技术干货 | AI驱动工程仿真和设计创新
  • 深度分析SQL与NoSQL数据库:优缺点、使用场景及选型指南
  • Linux基础 - shell基础
  • 一文搞懂Linux命令行下载OneDrive分享文件
  • SpringBoot 实现RequestBodyAdvice封装统一接受类功能
  • 贪吃蛇——c语言版
  • ctr/cvr预估之WideDeep模型
  • 快速生成基于vue-element的后台管理框架,实现短时间二次开发