nyoj+dfs搜索+vector二维数组+典型的递归模板需要慢慢领悟
2015-11-22 20:44
375 查看
点击打开链接
#include<stdio.h> #include<stdlib.h> #include<iostream> #include<cstring> #include<string> #include<string.h> #include<algorithm> #include<cmath> #include<vector> using namespace std; int pre[100005]; vector<int>v[100005]; void dfs(int S) { int i=0; for(i=0;i<v[S].size();i++){ if(pre[v[S][i]]) continue;///若存在父节点则继续遍历;也相当于剪枝 pre[v[S][i]]=S;///相连节点的父节点为S,因为是从S搜索到i的。 dfs(v[S][i]);///深搜到底,把一条路上父节点全部找出 } } int main() { int M=0,N=0,S=0,a=0,b=0,i=0; scanf("%d",&M); while(M--){ scanf("%d%d",&N,&S); memset(v,0,sizeof(v)); memset(pre,0,sizeof(pre)); pre[S]=-1;///起点没有父节点 for(i=0;i<N-1;i++){ scanf("%d%d",&a,&b); v[a].push_back(b);///a与b相连 v[b].push_back(a);///b与a也肯定相连 } dfs(S);///起点开始深搜 for(i=1;i<=N;i++){ printf("%d ",pre[i]); } printf("\n"); } return 0; }
相关文章推荐
- mysql 配置环境变量的方法及作用
- C/C++学习总结(复习)
- Hibernate 映射关系 ---Many2Many 双向关联
- 阮老师讲解TF-IDF算法
- 事件汇总
- Bootstrap 表格2
- 素数筛选法
- 最小环(floyd)
- SSH返回Json格式的数据
- 异常控制流学习记录
- 信息安全系统设计基础第十一周20135334赵阳林
- python 序列(list,tuple,str)基本操作
- Google Protocol Buffer 的使用和原理
- UiObject2介绍
- 【转】伪类选择器
- 最优合并问题
- poj2240Arbitrage【floyd】
- 初识Winsock之美
- CSS基础学习十六:CSS盒子模型补充之border-radius属性
- Java 如何有效地避免OOM:善于利用软引用和弱引用