bzoj 2763: [JLOI2011]飞行路线
2024-08-29 03:34:56
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#define pa pair<int,int>
#define inf 0x7fffffff
#define M 400008
using namespace std;
int d[M],f[M],n,m,k,s,t,cnt,head[M],next[*M],u[*M],v[*M];
void jia(int a1,int a2,int a3)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
v[cnt]=a3;
return;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d",&s,&t);
for(int i=;i<=m;i++)
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
jia(a1,a2,a3);
jia(a2,a1,a3);
for(int j=;j<=k;j++)
{
jia(j*n+a1,j*n+a2,a3);
jia(j*n+a2,j*n+a1,a3);
jia((j-)*n+a1,j*n+a2,);
jia((j-)*n+a2,j*n+a1,);
}
}
priority_queue<pa,vector<pa>,greater<pa> >q;
memset(d,,sizeof(d));
q.push(make_pair(,s));
d[s]=;
for(;!q.empty();)
{
int now=q.top().second;
q.pop();
if(f[now])
continue;
f[now]=;
for(int i=head[now];i;i=next[i])
if(d[u[i]]>d[now]+v[i])
{
d[u[i]]=d[now]+v[i];
q.push(make_pair(d[u[i]],u[i]));
}
}
int ans=inf;
for(int i=;i<=k;i++)
ans=min(ans,d[i*n+t]);
printf("%d\n",ans);
return ;
}
分层图按k分层
最新文章
- 在MVC5和webAPI下是用Autofac依赖注入
- CDH版本升级
- vagrant 安装使用 win7
- git报错 error: cannot stat ‘&#39;web/js&#39;: Permission denied
- DataGrid( 数据表格) 组件[7]
- linux命令--sysctl
- api的安全问题
- APUE-文件和目录(一)
- Git基础命令使用(个人总结)
- 在linux内核中实现自己的系统调用
- 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 二七║ Nuxt 基础:框架初探
- WIN10护眼色
- 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
- 洛谷P1433 吃奶酪【dfs】【剪枝】
- graphviz 程序生成多种类型图表详解
- Cocoa Touch提供了哪几种Core Animation过渡类型?
- CentOS7配置自定义JDK
- 编写高质量代码:Web前端开发修炼之道(三)
- java中的泛型1
- GeekforGeeks Trie - 键树简单介绍 - 构造 插入 和 搜索