各位老铁们,大家好,今天由我来为大家分享编程学习平台——计蒜客介绍,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
输入格式
第行包含整数()。
第~行,每行第一个整数代表地图物理值的变化。接下来是从此房间可以到达的房间列表。第一个整数表示房间数,后面是可以到达的房间数。
5
0 1 2
-60 1 3
-60 1 4
20 1 5
0 0 输出格式
如果玩家能够到达终点,则输出Yes,否则输出No。
不,首先我们来看看SPFA是什么。
众所周知,Dijkstra算法无法处理负权值的图,而Bellman-ford算法通过对图进行次松弛操作来获得所有可能的最短路径,而SPFA(Shortest Path Faster Algorithm)通常被认为是Bellman- ford算法的队列优化在代码形式上接近广度优先搜索BFS。它是一种单源最短路径算法,在实践中非常有效。
需要指出的是,SPFA的本质是Bellman-ford算法的队列优化。由于SPFA并没有改变Bellaman-ford的时间复杂度,所以国外一般不认为SPFA是一个新算法,而只是Bellman-ford的一个队列。优化。
某种程度上,可以认为SPFA是由BFS的思想改造而来:从无边权值或边权值为1单位长度的图上的BFS,推广到带权图,得到SPFA。 SPFA 和BFS 的区别在于,在BFS 中,如果一个点出队,则不可能重新入队,但在SPFA 中,一个点出队后可能会再次放入队列。也就是说,一个点改进了其他点之后,经过一段时间,它本身可能会得到改进,然后再次用来改进其他点,这样的迭代一直持续下去。
SPFA可以处理任意不包含负环(负环是指总边权为负的环)的图的最短路径,并且可以判断图中是否存在负环。
有了BFS的基础,我们就可以很容易得到SPFA的算法描述:
d[i]表示从源点到顶点的最短路径。队列q存储要扩展的顶点列表。 inq[i]标识顶点是否在队列中;
初始队列仅包含源点,且源点的d[s]=0。
取出队列头顶点,从顶点开始扫描每条边,将每条边的另一端设置为,边权重为,如果d[u] + w d[ v] ,然后将d[v] 修改为d[u] + w。如果不在队列中,请将添加到队列中。重复步骤直到队列为空。
最终的d[]数组是从源点到每个顶点的最短路径距离。如果某个顶点从未入队,则不存在从源到该顶点的路径。
无效spfa(int s) {
memset(inq, 0, sizeof(inq));
memset(d,0x3f, sizeof(d));
d[s]=0;
inq[s]=true;
队列q;
q.push(s);
while (!q.empty()) {
int u=q.front();
q.pop();
inq[u]=假;
for (int i=p[u]; i !=-1; i=e[i].next) {
int v=e[i].v;
if (d[u] + e[i].w d[v]) {
d[v]=d[u] + e[i].w;
如果(!inq[v]) {
q.push(v);
inq[v]=真;
}
}
}
}
}执行SPFA时,使用一个数组cnt[i]来标记每个顶点进入队列的次数。如果某个顶点入队的次数cnt[i]大于顶点总数,则说明该图包含负环。
显然,SPFA的空间复杂度为。如果平均顶点条目数为,则SPFA的时间复杂度为。对于比较随机的稀疏图,根据经验,一般不会超过。
对于稀疏图,SPFA 相比堆优化的Dijkstra 有很大的效率提升,但是对于稠密图,最差的SPFA 是,比堆优化的Dijkstra 的差很多。
看完SPFA,这个题就容易多了。
应用SPFA 模板时,请务必将d[] 数组初始化为负无穷大,并将起始体力值设置为d[s]=100。
那么SPFA的判断条件中,if(d[u] + e[i].w d[v])改为if(d[u] + e[i].w d[v]),因为我们需要保留体力最大的一个。
另外,每个点入队后,让cnt[i]++,如果等于,则说明有环,那么大蒜先生就可以无限制的走到这个点,最后的体力力量将无穷大,无需再考虑。其他点的体力都很高,一定能到达终点。所以直接返回,直接输出Yes。
最终输出结果为d[n] 0。
【编程学习平台——计蒜客介绍】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
真没想到还有专门做人工智能的平台!
有9位网友表示赞同!
感觉名字很特别,很有科技感!
有14位网友表示赞同!
我要去看看有没有我感兴趣的功能~
有8位网友表示赞同!
想了解下它的具体功能,能用在哪些方面?
有9位网友表示赞同!
是不是可以自己训练AI模型呀?还挺酷的!
有12位网友表示赞同!
计蒜客是哪个国家的品牌呢?
有6位网友表示赞同!
学习一下人工智能相关的知识,看来要找这个平台了。
有11位网友表示赞同!
感觉很专业的样子,适合开发者使用吧?
有19位网友表示赞同!
希望这个平台能提供一些入门教程!
有13位网友表示赞同!
听说计蒜客的人工智能很强大,我真想体验一下!
有6位网友表示赞同!
在网上看到过它的介绍,好像可以生成代码啊!
有16位网友表示赞同!
是不是可以用来创作文字、音乐什么的?
有17位网友表示赞同!
感觉这应该是个比较新兴的平台吧!
有7位网友表示赞同!
不知道计蒜客的用户评价怎么样呢?
有5位网友表示赞同!
我平时也对人工智能很感兴趣,一定会去尝试一下的!
有9位网友表示赞同!
会不会有中文版本的教程?这样学习起来会更方便。
有20位网友表示赞同!
想看看它和其他的人工智能平台有什么区别吗?
有9位网友表示赞同!
计蒜客的界面看起来是不是很简单易用呢?
有18位网友表示赞同!
这个平台免费试用吗?
有17位网友表示赞同!
感觉未来的人工智能一定会越来越发达!
有5位网友表示赞同!