DFS 2568 hdu (树中两点距离的搜索)
来源:互联网 发布:淘宝大学的证书 编辑:程序博客网 时间:2024/06/08 15:02
以要搜索的起点为root,进行深搜,期间不断更新其他点到起点的距离,直到遇到终点。
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<vector>#include<stack>#include<map>#define maxn 40005#define INF 99999999#define lson step<<1#define rson step<<1|1using namespace std;int T,n,m;int dis[maxn];bool book[maxn];vector<int>v[maxn];vector<int>we[maxn];void init(){ for(int i=0;i<maxn;i++) { v[i].clear(); we[i].clear(); }}void dfs(int st,int ed){ //if(st==ed) //return ;int t;for(int i=0;i<v[st].size();i++){t=v[st][i];if(book[t]==true)continue; book[t]=true;dis[t]=dis[st]+we[st][i];//cout << t << ' ' << dis[t] << endl;dfs(t,ed);}return ;}int main(){scanf("%d",&T);while(T--){scanf("%d %d",&n,&m);init();for(int i=0;i<n-1;i++){int a,b,w;scanf("%d %d %d",&a,&b,&w);v[a].push_back(b);v[b].push_back(a);we[a].push_back(w);we[b].push_back(w);}int st,ed;for(int i=0;i<m;i++){memset(dis,0,sizeof(dis));memset(book,false,sizeof(book));scanf("%d %d",&st,&ed);book[st]=true;dfs(st,ed);printf("%d\n",dis[ed]);}if(T!=0) printf("\n");}return 0;}
阅读全文
0 0
- DFS 2568 hdu (树中两点距离的搜索)
- 计算树中两点之间的距离
- HDU 2001 计算两点间的距离(水~)
- HDU 2001 计算两点间的距离(水题)
- hdu 1007 quoit design(分冶求距离最近的两点)
- hdu 2001 计算两点间的距离
- HDU 2001 计算两点间的距离
- HDU 2001 计算两点间的距离
- HDU 2001 计算两点间的距离
- HDU 2001 - 计算两点间的距离
- HDU 2001 计算两点间的距离
- [hdu 2001] 计算两点间的距离
- HDU-2001 计算两点之间的距离
- HDU 2001 计算两点间的距离
- HDU 2001 计算两点间的距离
- hdu 2001 计算两点间的距离
- hdu 2001计算两点间的距离
- HDU 2001 计算两点间的距离
- easyui展示年月
- 代码实现能力啊!!!!
- Redis的简单应用
- decode
- 电容电阻贴片封装尺寸
- DFS 2568 hdu (树中两点距离的搜索)
- Github Page + Hexo 搭建静态博客傻瓜式教程
- 大数据1-淘宝Hadoop集群的概况(转)
- jq案例练习
- 习题6.10
- storm详解与调优
- 判断窗口是否退出
- 我的第一篇博客
- 3.3 设银行定期存款的年利率rate为2.25%,已知存款期为n年,存款本金为capital元,试编程计算并输出n年后的本利之和deposit