#include<iostream>
#include<queue>
#include<algorithm>
#include<stdio.h>
#include<cstring>
using
namespace
std;
int
A,B,M,L,K,ANS;
const
int
INF=100000000;
int
zero[105][105],d[105][105],g[101][101], inq[101][11];
struct
node
{
int
v,num,
time
;
node(
int
_v,
int
_num,
int
_time):v(_v),num(_num),
time
(_time){};
friend
bool
operator <(
const
node &a,
const
node &b)
{
if
(a.num!=b.num)
return
a.num>b.num;
return
a.
time
>b.
time
;
}
};
void
add_zero()
{
for
(
int
k=1;k<=A;k++)
for
(
int
i=1;i<=A+B;i++)
for
(
int
j=1;j<=A+B;j++)
{
if
(d[i][j]>d[i][k]+d[k][j])
d[i][j]=d[i][k]+d[k][j];
}
for
(
int
i=1;i<=A+B;i++)
for
(
int
j=1;j<=A+B;j++)
if
(d[i][j]<=L){zero[i][j]=1;zero[j][i]=1;}
}
void
Dij()
{
priority_queue <node> pq;
pq.push(node(A+B,0,0));
for
(
int
i=1;i<=A+B;i++)
for
(
int
j=0;j<=K;j++)
inq[i][j]=INF;
int
done[101][11];
memset
(done,0,
sizeof
(done));
while
(!pq.empty())
{
node t=pq.top();
pq.pop();
done[t.v][t.num]=1;
if
(t.num>K)
continue
;
if
(t.num<=K&&t.v==1&&t.
time
<ANS){ANS=t.
time
;
continue
;}
if
(t.num<=K&&t.v==1&&t.
time
>=ANS)
continue
;
if
(t.num<=K&&t.v!=1&&t.
time
>=ANS)
continue
;
for
(
int
i=A+B;i>=1;i--)
{
if
((g[t.v][i]!=INF||zero[t.v][i]))
{
if
(!done[i][t.num]&&g[t.v][i]!=INF&&t.
time
+g[t.v][i]<inq[i][t.num])
{
inq[i][t.num]=t.
time
+g[t.v][i];
pq.push(node(i,t.num,t.
time
+g[t.v][i]));
}
if
(!done[i][t.num+1]&&zero[t.v][i]&&t.
time
<inq[i][t.num+1])
{
inq[i][t.num+1]=t.
time
;pq.push(node(i,t.num+1,t.
time
));
}
}
}
}
}
void
set()
{
for
(
int
i=1;i<=A+B;i++)
for
(
int
j=1;j<=A+B;j++)
{d[i][j]=INF;g[i][j]=INF;}
memset
(zero,0,
sizeof
(zero));
for
(
int
i=1;i<=A+B;i++)
for
(
int
j=0;j<=K;j++)
inq[i][j]=INF;
ANS=INF;
}
int
main()
{
int
cas,a,b,c;
cin>>cas;
while
(cas--)
{
scanf
(
"%d%d%d%d%d"
,&A,&B,&M,&L,&K);
set();
for
(
int
i=0;i<M;i++)
{
scanf
(
"%d%d%d"
,&a,&b,&c);
g[a][b]=c,g[b][a]=c;
d[a][b]=c;d[b][a]=c;
}
add_zero();
Dij();
printf
(
"%d\n"
,ANS);
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C#使用yield关键字提升迭代性能与效率
· 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
· 4. 使用sql查询excel内容