欧拉回路 + 数据结构 + dfs
来源:互联网 发布:sniffer捕获别人的数据 编辑:程序博客网 时间:2024/06/08 19:02
poj 2230
这个题确实很经典。刚开始的时候想了好久,一直没想明白怎么去遍历所有的点两遍。搜了,别人的解题报告。顿悟,标记边啊。太弱了。。然后保存成动态邻接表的形式。深搜一遍就过了。。后来看到一大牛博客上的解法,瞬间,觉得,那种相对邻接表保存的数据结构,简直碉堡了,神牛果然是用来学习的。。
邻接表:
#include <iostream>#include <vector>#include <cstdio>#define N 100005using namespace std;int n,m;struct node{ int v,f;};vector<node> g[N];void dfs(int k){ for(int i=0 ;i<g[k].size() ; i++) { if(g[k][i].f) { g[k][i].f=0; dfs(g[k][i].v); } } printf("%d\n",k);}int main (){ int i; //freopen("1.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { int x,y; for(i=0 ; i<m ; i++) { node t; scanf("%d%d",&x,&y); //x->y t.v=y,t.f=1; g[x].push_back(t); //y->x t.v=x,t.f=1; g[y].push_back(t); } dfs(1); } return 0;}
大牛的强势保存形式:
#include <iostream>#include <cstdio>#include <cstring>#include <string>#define N 100005using namespace std;bool f[N];struct node{ int t,nx;}e[N];int n,m,a[N],nt;void dfs(int k){ int v; for(v=a[k] ; v!=-1 ; v=e[v].nx) { if(!f[v]) { f[v]=1,dfs(e[v].t); } } printf("%d\n",k);}int main (){ //freopen("1.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { int i,x,y; memset(f,0,sizeof(f)); memset(a,-1,sizeof(a)); for(nt=i=0 ; i<m ; i++) { scanf("%d%d",&x,&y); //x->y e[nt].t=y,e[nt].nx=a[x],a[x]=nt++; //y->x e[nt].t=x,e[nt].nx=a[y],a[y]=nt++; } dfs(1); } return 0;}btw:要理解 后面那段代码的保存结构,建议自己画图。 (个人以最近孩子的概念,每个节点保存了 ta上一个兄弟节点的信息。。)
- 欧拉回路 + 数据结构 + dfs
- poj2230欧拉回路+DFS
- hdu1878欧拉回路(DFS+欧拉回路)
- SDUT 数据结构 欧拉回路
- poj 2230 Watchcow (DFS + 欧拉回路)
- 单词拼接 欧拉回路+dfs
- 10596 - Morning Walk(欧拉回路 + dfs)
- POJ2230 Watchcow 【欧拉回路】+【DFS】
- POJ2230 Watchcow(欧拉回路 + dfs)
- POJ2337 Catenyms(欧拉回路+dfs)
- HDU 1878 欧拉回路(DFS)
- 一笔画问题 【欧拉回路】+【dfs】
- 数据结构实验之图论八:欧拉回路(并查集+DFS+BFS)
- 数据结构与算法问题 欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- oracle 关闭自动归档
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- HttpContext.Current并非无处不在
- POJ 3683 Priest John's Busiest Day
- 用户界面线程AfxBeginThread的使用
- 欧拉回路 + 数据结构 + dfs
- QT学习:Qt中应用程序图标的修改
- uva 10815
- linux中select()函数分析 (我已读过,并进行了微改动)
- 函数指针和指针函数
- sandbox paypal
- 阿里巴巴2013实习生笔试题精选2道算法题
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- Bitmap XML和BitmapDrawable应用实例