POJ2230 Watchcow 欧拉回路[dfs+邻接表]
来源:互联网 发布:mac两个显示器 编辑:程序博客网 时间:2024/06/06 02:07
思路:很显然是一个欧拉无向图。
因为要遍历每个边两遍而且方向不同。
所以可以看成是有向图来处理。
以下代码是 dfs+邻接表。
这里注意的dfs和普通的dfs不一样在于终止条件。
以前的dfs都是找到某个点后终止,现在是直到遇到某个点,那个点已经无路可走了,再终止。(因为题目已经保证要求的路径存在)
还有就是有些人估计疑惑为什么没用到栈来输出。
其实不用栈的原因很简单,就是欧拉回路的路径是对称。起点终点都是1,你从终点走过来和从起点走过来都是符合题意。
第一次接触欧拉图,还有这题算简单的,一次AC水过。
#include<iostream>using namespace std;const int N=10005;const int M=50005;int n,m;int k=1;struct Edge{int v,next,re;bool vis;}edge[2*M];int edgehead[N];void addedge(int from,int to){edge[k].v=to;edge[k].next=edgehead[from];edge[k].vis=0;edge[k].re=k+1;edgehead[from]=k;k++;edge[k].v=from;edge[k].vis=0;edge[k].re=k-1;edge[k].next=edgehead[to];edgehead[to]=k;k++;}void dfs(int now){for(int i=edgehead[now];i;i=edge[i].next){if(!edge[i].vis)//这个深搜的终止条件是每个边都结束了。{edge[i].vis=true;dfs(edge[i].v);}}printf("%d\n",now);}void solve(){dfs(1);}int main(){scanf("%d%d",&n,&m);int from,to;for(int i=1;i<=m;i++){scanf("%d%d",&from,&to);addedge(from,to);}solve();return 0;}
- POJ2230 Watchcow 欧拉回路[dfs+邻接表]
- POJ2230 Watchcow 【欧拉回路】+【DFS】
- POJ2230 Watchcow(欧拉回路 + dfs)
- POJ2230 Watchcow【欧拉回路】
- POJ2230 Watchcow(欧拉回路)
- poj2230 Watchcow (欧拉回路)
- POJ2230 Watchcow——欧拉回路
- POJ2230 Watchcow 欧拉回路路径
- poj2230欧拉回路+DFS
- poj2230 Watchcow(欧拉回路:输出点轨迹)
- poj 2230 Watchcow (DFS + 欧拉回路)
- POJ 2230 Watchcow (欧拉路径 dfs 邻接表)
- POJ 2230 Watchcow(欧拉回路+DFS)
- (欧拉回路)Watchcow(P2230)
- 【poj2230】Watchcow——dfs
- poj2230(欧拉回路模板)
- Watchcow 欧拉路径 DFS
- POJ 2230 Watchcow 【欧拉回路】
- Linux文件系统简介
- allegro学习笔记
- python+django+mysql学习笔记
- 内核配置和编译
- gcc 参数详解
- POJ2230 Watchcow 欧拉回路[dfs+邻接表]
- 设计模式笔记之Strategy Pattern
- 实例:Linux EXT3文件系统下成功恢复误删的文件
- How to Read SQL Syntax
- java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0的错误
- GPRS CMS&CME error code
- Sql 截取、替换 字符串 ,数据批量导入
- 使用Axis2的底层API开发Web Service Server端
- 安装Make Menuconfig所需内核编译环境和图形库