FZU 2256 迷宫

时间:2022-09-15 09:48:30

https://vjudge.net/problem/FZU-2256

题意:略

思路:

在比赛的时候想到了一次dfs,一次bfs但是样例都过不了。。。赛后才知道,距离的更新必须同步,不能先把时光机的距离更新了,再去更新走路的距离。

这题实际上是树上的动态规划,但是可以用一次dfs解决。每次更新的距离的时候,有两个距离需要注意一下,第一个是通过时光机的距离,第二个是实际的距离。时光机的距离如何更新呢,通过上级的距离与(实际的距离加上当前的时光机的距离)进行比较更新。实际的距离的更新就是直接加上当前的实际距离加上走的距离传入下一级就ok了。注意一开始传入的时光机的距离设置为无穷大,因为没有其他时光机可以到达1号房间。

代码:

 #include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std; struct edge
{
int from,to,dist;
}; vector<edge> edges; vector<int> v[]; int d[];
int dis[]; void init(void)
{
edges.clear();
memset(v,,sizeof(v));
} void adde(int from,int to,int dist)
{
edge t;
t.from = from,t.to = to,t.dist = dist; edges.push_back(t); int sz = edges.size(); v[from].push_back(sz-);
} void dfs(int rt,int cst1,int cst2)//cst1是传送,cst2是走路
{
dis[rt] = min(cst1,cst2); for (int i = ;i < v[rt].size();i++)
{
int id = v[rt][i]; edge t = edges[id]; int x = t.to,w = t.dist; int cost = min(dis[rt] + d[rt],cst1); dfs(x,cost,dis[rt] + w);
}
} int main()
{
int n; while (scanf("%d",&n) != EOF)
{
init(); for (int i = ;i <= n;i++)
{
scanf("%d",&d[i]);
} for (int i = ;i < n;i++)
{
int id,dis; scanf("%d%d",&id,&dis); adde(id,i+,dis);
} dfs(,,); for (int i = ;i <= n;i++)
printf("%d ",dis[i]); printf("\n");
} return ;
}

FZU 2256 迷宫的更多相关文章

  1. FOJ Problem 2256 迷宫

                                                                                                        ...

  2. FZU 2285 迷宫寻宝

    思路: bfs求最短路径. #include<stdio.h> #include<iostream> #include<queue> #include<cst ...

  3. FZU 2186 小明的迷宫 【压状dp】

    Problem Description 小明误入迷宫,塞翁失马焉知非福,原来在迷宫中还藏着一些财宝,小明想获得所有的财宝并离开迷宫.因为小明还是学生,还有家庭作业要做,所以他想尽快获得所有财宝并离开迷 ...

  4. Problem 2285 迷宫寻宝 (BFS)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2285 Problem 2285 迷宫寻宝 Accept: 323    Submit: 1247Time Li ...

  5. Problem 2285 迷宫寻宝

    http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...

  6. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

  7. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  8. BFS&lowbar;Maze&lowbar;求解迷宫最短路径

    /* 10 10 #.######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... .## ...

  9. FZU 2137 奇异字符串 后缀树组&plus;RMQ

    题目连接:http://acm.fzu.edu.cn/problem.php?pid=2137 题解: 枚举x位置,向左右延伸计算答案 如何计算答案:对字符串建立SA,那么对于想双延伸的长度L,假如有 ...

随机推荐

  1. python,django做中间件屏蔽非法访问

    我使用django1.6. django框架没有urlfilter这样的原生中间件,但是灵活的django设计者为我们留下了更*的渠道. 在没有使用django以前,我没有接触过如此潇洒的编程方式, ...

  2. Xcode Pod使用

    安装pod  略.. 打开终端 cd  项目路径  (可以在xocde里项目右键show in Finder  讲工程目录拖入终端) 回车 vim podfile 回车 输入 :wq 保存 建立pod ...

  3. C&num; 多线程传参 三种实例

    //using Thread to download files //1111111111111111 foreach (var str in listDownloadPdf) { //string ...

  4. &lbrack;&period;Net MVC&rsqb; 使用SQL Server数据库代替LocalDb

    之前开发的时候一直用的VS2013,所以数据库也用的LocalDb,这给开发带来很大便利.不过由于开发后还要进行部署,就改用了SQL Server 2012,这里总结下过程. 基本环境:VS2013, ...

  5. 整个网站灰度显示css代码

    body *{ -webkit-filter: grayscale(100%); /* webkit */ -moz-filter: grayscale(100%); /*firefox*/ -ms- ...

  6. 201521123059 《Java程序设计》第二周学习总结

    1.本周总结 本周老师讲了和自己掌握了以下内容: (1).三元条件运算符 表达式1?表达式2:表达式3: (2). 字符串String类 String的不可变优点:编译器可以让字符串共享,效率高.但是 ...

  7. 使用速卖通开放平台云API调用菜鸟组件实现云打印

    公司是跨境电商,使用速卖通平台卖玩具,我们自己研发的ERP是基于速卖通开放平台API,实现订单的发货提交,打印面单等功能 近期公司要求使用菜鸟组件云打印,去平台里看下,有这个API,如下图所示 实现也 ...

  8. UnderScore的使用实例记录

    集合操作 _.range(),主要用于区间的获取操作.参数说明:(param1):范围上限,(param1,param2):起始及结束范围,(param1,param2,param3):起始结束范围, ...

  9. &lbrack;转帖&rsqb;web安全:QQ号快速登录漏洞及被盗原理

    web安全:QQ号快速登录漏洞及被盗原理 https://www.cnblogs.com/1996V/p/7481823.html 看了下 QQ的确监听 端口 大神牛B 自己这一块一直没深入学习过.. ...

  10. 行高(line-height)

    line-height属性 设置元素中文本行高.