10557 - XYZZY(****)---Bellman-Ford算法

本文探讨了从1到n的能量路径问题,利用d数组记录到各点后的能量值,通过松弛操作寻找从起点到终点的最长路径。在解决过程中,首先需要判断是否存在无法到达的节点,并使用Bellman-Ford算法进行路径查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 题意:从1走到n,每走到一个屋子即可获得屋里的能量。 能量值可为负,问是否可以走到n 思路: 题目实际是求从起点到终点的最长路径问题 由于没到一个点,能量值不为负,所以使用d[]来记录到各点后的能量值 ,初始化为0,然后使用循环进行松弛,最后判断d[n]是否大于零,如果 是则可达。但是如果图中出现正环,则可能使程序陷入死循环,则不要 在出现正环时能跳出循环。 另外,在之前需要进行一次初始化,从n开始进行逆向搜索,判断各点 是否能到达n(这一步必不可少,若在不可达的点集中出现一个环则会出错) ,然后使用队列优先的Bellman-Ford算法即可 */ #include <cstdio> #include <cstring> const int nMax=110; int G[nMax][nMax],w[nMax],d[nMax]; int q[nMax],inq[nMax],inedq[nMax]; int visit[nMax],reach[nMax]; int n; void dfs(int u) { visit[u]=1; reach[u]=1; for(int v=1;v<=n;v++) { if(G[v][u] && !visit[v]) { dfs(v); } } } int main() { //freopen("data.in","r",stdin); while(scanf("%d",&n)==1) { if(n==-1) break; memset(G,0,sizeof(G)); memset(w,0,sizeof(w)); for(int i=1;i<=n;i++) { scanf("%d",&w[i]); int k; scanf("%d",&k); for(int j=0;j<k;j++) { int u; scanf("%d",&u); G[i][u]=1; } } memset(visit,0,sizeof(visit)); memset(reach,0,sizeof(reach)); dfs(n); if(!reach[1]) { printf("hopeless\n"); continue; } int front=0,rear=0; memset(q,0,sizeof(q)); memset(d,0,sizeof(d)); memset(inq,0,sizeof(inq)); memset(inedq,0,sizeof(inedq)); q[front++]=1; d[1]=100; inq[1]=1; inedq[1]++; bool ok=false; while(front!=rear) { int u=q[rear++]; if(rear==n) rear=0; inq[u]=0; for(int v=1;v<=n;v++) { if(G[u][v] && reach[v] && d[u]+w[v]>d[v]) { d[v]=d[u]+w[v]; if(!inq[v]) { q[front++]=v; if(front==n) front=0; inq[v]=1; inedq[v]++; if(inedq[v]>n) { ok=true; break; } } } } if(d[n]>0 || ok) break; } if(d[n]>0 || ok) printf("winnable\n"); else printf("hopeless\n"); } return 0; }

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值