博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019牛客暑期多校训练营(第四场)J:free(分层图最短路裸题)
阅读量:3898 次
发布时间:2019-05-23

本文共 847 字,大约阅读时间需要 2 分钟。

【题解】

题意:给定一个无向连通图,有k个让边权为0的机会,输出s到t的最短路。

思路:分层图最短路裸题。

【代码】

#include 
using namespace std;const int maxn=1006;typedef pair
P;const int inf=0x3f3f3f3f;int n,m,s,t,k;int d[maxn][maxn];vector

g[maxn];void dij(int s){ memset(d,inf,sizeof(d)); d[s][0]=0; queue

q; q.push(P(s,0)); //初始情况:0条被使用 while(!q.empty()){ int u=q.front().first,w=q.front().second; q.pop(); for(int i=0;i

d[u][w]){ d[v][w+1]=d[u][w]; q.push(P(v,w+1)); } } }}int main(){ scanf("%d%d%d%d%d",&n,&m,&s,&t,&k); int u,v,c; for(int i=1;i<=m;i++){ scanf("%d%d%d",&u,&v,&c); g[u].push_back(P(v,c)); g[v].push_back(P(u,c)); } dij(s); int ans=inf; for(int i=0;i<=k;i++) ans=min(ans,d[t][i]); printf("%d\n",ans);}

 

转载地址:http://anben.baihongyu.com/

你可能感兴趣的文章
使用sizeof计算类的大小
查看>>
乐观锁与悲观锁——解决并发问题
查看>>
operator 类型转换及重载
查看>>
HTTP状态码
查看>>
TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
查看>>
TCP/IP详解--再次深入理解TCP网络编程中的send和recv
查看>>
TCP与UDP收发的时候TCP有缓冲区还是UDP有缓冲区,使用它们时该注意什么?
查看>>
C++中map、hash_map、unordered_map、unordered_set通俗辨析
查看>>
clone的fork与pthread_create创建线程有何不同&pthread多线程编程的学习小结
查看>>
运算符重载参数的顺序对运算是否有影响
查看>>
什么时候要用虚析构函数?
查看>>
序列化、反序列化与jsoncpp学习
查看>>
同步/异步与阻塞非阻塞的关系
查看>>
epoll模型讲解/源码分析
查看>>
ELF格式与bss段
查看>>
java继承 long和float小记点
查看>>
记录几点在开发中遇到的问题 2015-7-28 (会更新)
查看>>
网银在线的异步操作代码示意图
查看>>
火狐Firefox浏览器安装Selenium_IDE的步骤以及其使用规则
查看>>
记录运行代码的时间长短
查看>>