HDU 2586 How far away(dfs+邻接表)
How far away
【题目链接】How far away
【题目类型】dfs+邻接表
&题意:
题目大意:一个村子里有n个房子,这n个房子用n-1条路连接起来,接下了有m次询问,每次询问两个房子a,b之间的距离是多少。
&题解:
我以为是LCA的题,但dfs居然也能过,感觉是数据有点弱,(时间复杂度是4000x200x10,想了想10组又不能全是200,所以应该勉强可以)但学到了邻接表的数组形式,用数组表示链表,很厉害的样子,感觉和前向星好相似啊 
&代码:
#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define fo(i,a,b) for(int i=(a);i<=(b);i++)
#define fd(i,a,b) for(int i=(a);i>=(b);i--)
const int maxn = 80000 + 7;
struct Edge {
	int u, v, w, nx;
} G[maxn];
int id, ft[maxn], n, m, vis[maxn], ans, ok, vv, K;
void Add(int u, int v, int w) {
	G[id].u = u, G[id].v = v, G[id].w = w;
	G[id].nx = ft[u];
	ft[u] = id++;
}
void dfs(int d, int num) {
	if(ok) return;
	if(d == vv) {
		ans = num;
		ok = 1; return ;
	}
	vis[d] = 1;
	for(int i = ft[d]; ~i; i = G[i].nx) {
		if(!vis[G[i].v]) {
			dfs(G[i].v, num + G[i].w);
		}
	}
}
int main() {
	freopen("E:1.in", "r", stdin);
	int T; scanf("%d", &T);
	while(T--) {
		scanf("%d%d", &n, &m);
		int u, v, w;
		id = 0;
		memset(ft, -1, sizeof(ft));
		fo(i, 2, n) {
			scanf("%d%d%d", &u, &v, &w);
			Add(u, v, w);
			Add(v, u, w);
		}
		fo(i, 1, m) {
			scanf("%d%d", &u, &vv);
			memset(vis, 0, sizeof(vis));
			ok = 0;
			vis[u] = 1;
			dfs(u, 0);
			printf("%d\n", ans);
		}
	}
	return 0;
}
HDU 2586 How far away(dfs+邻接表)的更多相关文章
- HDU 2586 How far away(LCA+邻接表)
		How far away &题解: 和上篇是一样的题,这用的是lca方法做的, 不知道为什么,把数组开到80000 就a了 >_< 哈 我现在知道为什么了,因为我的rmq数组没有乘 ... 
- 2021-ACM-ICPC-济南站  K Search For Mafuyu 【树的遍历与回溯,dfs, 邻接表】
		PAT 题目详情 (pintia.cn) 题目 题意描述 n个房间, 有n-1个通道, kanade初始在1,Mafuyu 位置未知,求K到M的最小期望,也就是到每个地方的平均值,注意的是这里的求法, ... 
- hdu 4707 Pet(DFS && 邻接表)
		Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ... 
- HDU 4707 Pet 邻接表实现
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707 解题报告:题目大意是在无向图G中有n个点,分别从0 到n-1编号,然后在这些点之间有n-1条边, ... 
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
		sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ... 
- zstu.4191: 无向图找环(dfs树 + 邻接表)
		4191: 无向图找环 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 117 Solved: 34 Description 给你一副无向图,每条边有 ... 
- HDU 4858 项目管理(邻接表 暴力模拟)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的! 两个节点间可 ... 
- HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可 ... 
- 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS
		图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ... 
随机推荐
- Win7 SP1 64位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20180604
			一.系统特色 1.采用微软原版旗舰版定制而成. 2.优化系统服务,关闭一些平时很少使用的服务. 3.精简掉一些无用的东西. 4.系统全程离线制作,不包含任何恶意插件,放心使用. 5.右下角时间加上星期 ... 
- List分组
			IEnumerable<IGrouping<string, SysMap>> query = sysMapList.GroupBy(pet => pet.Mobile); 
- R语言与机器学习学习笔记
			人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ... 
- JavaScript学习历程01
			水仙花数 ps:各位数字立方和等于该数本身 方法1 (数组) <script type="text/javascript"> var i = 100; var newi ... 
- HAWQ配置之客户端访问
			一.配置简单的口令访问 1,建立数据库和用户 postgres=# create database epbd; CREATE DATABASE postgres=# create role user1 ... 
- LiDAR、LAS、LAS  Dataset与点云
			LiDAR Light Detection And Ranging,激光探测及测距,是一种光学遥感技术,使用激光对地球表面的密集采样,产生高精度X.Y.Z测量值. 激光雷达系统的主要硬件组成部分包括一 ... 
- THINKPHP5近期暴露的漏洞
			这个THINKPHP5的漏洞涉及好几个版本,我测试中5.0.21和5.0.22都有,据说是5.0 ~ 5.0.23之间的版本都存在,这个漏洞可以执行写文件的操作. 当然了,赶紧升级框架到安全版本是比较 ... 
- 给vscode添加右键打开功能
			将以下文本存为vscode.reg,然后运行: Windows Registry Editor Version 5.00 ; Open files [HKEY_CLASSES_ROOT\*\shel ... 
- java源码中的注解
			spring框架源码中充满了注解,如果对注解不是很了解,阅读源码就寸步难行,下面我们来看看annotation.https://blog.csdn.net/briblue/article/detail ... 
- mysql中的事物处理
			首先,事物的概念,保证一组sql语句操作的完整性,在这个过程中要充分考虑到多用户同时访问数据库数据的情况. 关键词有COMMIT,ROLLBACK,,START TRANSACTION 
