CF1915G Bicycles 题解
分析
参照去年普及组 T4,很显然能发现就是一个暴力最短路。设
考虑最短路转移。对于当前的
复杂度
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re register
#define il inline
#define PII pair<int,pair<int,int>>
#define x first
#define y second
il int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar();}
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
il void write(int x) {
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
const int N=2005;
int n,m,s[N];
int ne[N],e[N],h[N],w[N],idx;
int dis[N][N],vis[N][N];
il void add(int a,int b,int c){ne[++idx]=h[a],e[idx]=b,w[idx]=c,h[a]=idx;}
il void dij(){
for(re int i=1;i<=n;++i)for(re int j=1;j<=1001;++j) dis[i][j]=1e16,vis[i][j]=0;
priority_queue<PII,vector<PII>,greater<PII>> qu;
qu.push({0,{s[1],1}}),dis[1][s[1]]=0;
while(!qu.empty()){
PII now=qu.top();qu.pop();
if(vis[now.y.y][now.y.x]) continue;
vis[now.y.y][now.y.x]=1;
for(re int i=h[now.y.y];i;i=ne[i]){
int j=e[i];if(dis[j][min(s[j],now.y.x)]>dis[now.y.y][now.y.x]+w[i]*now.y.x){
dis[j][min(s[j],now.y.x)]=dis[now.y.y][now.y.x]+w[i]*now.y.x;
qu.push({dis[j][min(s[j],now.y.x)],{min(s[j],now.y.x),j}});
}
}
}
return ;
}
il void solve(){
n=read(),m=read();idx=0;
for(re int i=1;i<=n;++i) h[i]=0;
for(re int i=1,a,b,c;i<=m;++i)
a=read(),b=read(),c=read(),add(a,b,c),add(b,a,c);
for(re int i=1;i<=n;++i) s[i]=read();
dij();int Min=1e18;
for(re int i=1;i<=1001;++i) Min=min(Min,dis[n][i]);
write(Min),puts("");
return ;
}
signed main(){
int t=read();while(t--)
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!