为什么早年的题总是从0开始标号啊……又zz了一次WA

分层图的题只有这一个套路吧,建分层图,然后优化时间是分层跑spfa然后层与层之间单独跑即可

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int N=50005,inf=1e9;
int n,m,k,s,t,h[N],cnt,dis[N],d[N];
bool v[N];
deque<int>q;
struct qwe
{
int ne,no,to,va;
}e[N<<2];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
inline void add(int u,int v,int w)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].no=u;
e[cnt].to=v;
e[cnt].va=w;
h[u]=cnt;
}
void spfa()
{
while(!q.empty())
{
int u=q.front();
q.pop_front();
v[u]=0;
for(int i=h[u];i;i=e[i].ne)
if(dis[e[i].to]>dis[u]+e[i].va)
{
dis[e[i].to]=dis[u]+e[i].va;
if(!v[e[i].to])
{
v[e[i].to]=1;
if(!q.empty()&&dis[q.front()]>dis[e[i].to])
q.push_front(e[i].to);
else
q.push_back(e[i].to);
}
}
}
}
int main()
{
n=read(),m=read(),k=read(),s=read()+1,t=read()+1;
for(int i=1;i<=m;i++)
{
int x=read()+1,y=read()+1,z=read();
add(x,y,z),add(y,x,z);
}
for(int i=1;i<=n;i++)
dis[i]=inf;
v[s]=1,dis[s]=0,q.push_back(s);
spfa();
for(int con=1;con<=k;con++)
{
for(int i=1;i<=n;i++)
d[i]=inf;
v[s]=1,dis[s]=0,q.push_back(s);
for(int i=1;i<=cnt;i++)
if(d[e[i].to]>dis[e[i].no])
{
d[e[i].to]=dis[e[i].no];
if(!v[e[i].to])
{
v[e[i].to]=1;
if(!q.empty()&&d[q.front()]>d[e[i].to])
q.push_front(e[i].to);
else
q.push_back(e[i].to);
}
}
for(int i=1;i<=n;i++)
dis[i]=d[i];
spfa();
}
printf("%d\n",dis[t]);
return 0;
}

最新文章

  1. Visual Studio 2010 下 安装RGiesecke.DllExport
  2. PHP空数组转化为json对象的问题
  3. 点击div外面该div消失
  4. 关于MySQL大牛周振兴的博客
  5. WINDOWS2008 设置FTP防火墙规则
  6. OpenJudge/Poj 1207 The 3n + 1 problem
  7. 归并排序 求逆序数 链表的归并排序 多线程归并排序 java
  8. MySQL具体解释(19)----------海量数据分页查询优化
  9. mongodb操作:利用javaScript封装db.collection.find()后可调用函数源码解读
  10. 最小的 Velocity 教程
  11. 【伯乐在线】100个高质量Java开发者博客
  12. python标准日志模块logging及日志系统设计
  13. 2017-12-19python全栈9期第四天第二节之列表的增删查改之公共方法len和count和index
  14. Android高级工程师面试实战,您会挂么?
  15. __add__,关于运算符重载(用户权限)
  16. 剑指Offer_编程题_9
  17. 网络IP地址
  18. yum和apt-get用法及区别
  19. Ubuntu下启动 Redis时, 提示 &quot;Can&#39;t open the log file: Permission denied failed&quot;
  20. -03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】

热门文章

  1. 使用C++调用pytorch模型(Linux)
  2. Leetcode 152.乘机最大子序列
  3. Linux下汇编语言学习笔记5 ---
  4. hdu - 2822 Dogs (优先队列+bfs)
  5. Layui颜色
  6. Subsets and Subsets II (回溯,DFS,组合问题)
  7. Java之旅(1)—Class类
  8. php设计模式——模板模式
  9. Network problem solving flow chart
  10. ISkyShop B2B2C 商城系统V1.0正式版隆重公布