[BZOJ2763][JLOI2011]飞行路线(图论)
来源:互联网 发布:vb 修改批处理 编辑:程序博客网 时间:2024/04/29 23:17
题目:
我是超链接
题解:
分层图来一波!就是在裸dij的基础上加了一步,可以往下一层转移状态
代码:
#include <queue>#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int N=50005;struct hh{int x,c,dis;};int tot,nxt[N*2],point[N],v[N*2],c[N*2];int s,t,dis[10005][15],k;bool vis[10005][15];bool operator <(const hh a,const hh b){return a.dis>b.dis;}void addline(int x,int y,int z){ ++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; c[tot]=z; ++tot; nxt[tot]=point[y]; point[y]=tot; v[tot]=x; c[tot]=z;}int dij(){ priority_queue<hh>q; memset(dis,0x7f,sizeof(dis)); memset(vis,0,sizeof(vis)); dis[s][0]=0; q.push((hh){s,0,0}); while (!q.empty()) { hh now=q.top(); q.pop(); if (vis[t][k]) return dis[t][k]; if (vis[now.x][now.c]) continue; vis[now.x][now.c]=1; for (int i=point[now.x];i;i=nxt[i]) { if (dis[v[i]][now.c]>dis[now.x][now.c]+c[i]) { dis[v[i]][now.c]=dis[now.x][now.c]+c[i]; q.push((hh){v[i],now.c,dis[v[i]][now.c]}); } if (now.c+1<=k) dis[v[i]][now.c+1]=now.dis,q.push((hh){v[i],now.c+1,now.dis}); } }}int main(){ int n,m,i; scanf("%d%d%d",&n,&m,&k); scanf("%d%d",&s,&t);s++; t++; for (i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); addline(x+1,y+1,z); } printf("%d",dij());}
阅读全文
0 0
- [BZOJ2763][JLOI2011]飞行路线(图论)
- 【JLOI2011】【BZOJ2763】飞行路线
- BZOJ2763: [JLOI2011]飞行路线
- bzoj2763【JLOI2011】飞行路线
- BZOJ2763 [JLOI2011]飞行路线
- 【bzoj2763】[JLOI2011]飞行路线
- [BZOJ2763][JLOI2011]飞行路线
- 【bzoj2763】[JLOI2011]飞行路线
- 【bzoj2763】【JLOI2011】飞行路线
- BZOJ2763: [JLOI2011]飞行路线
- BZOJ2763: [JLOI2011]飞行路线
- BZOJ2763: [JLOI2011]飞行路线
- bzoj2763 [JLOI2011]飞行路线 Dijkstra
- Dijkstra BZOJ2763 [JLOI2011]飞行路线
- BZOJ2763 [JLOI2011]飞行路线(分层图最短路)
- 【BZOJ2763】【JLOI2011】飞行路线 分层图
- 【bzoj2763】 JLOI2011飞行路线 分层最短路
- 分层图,bzoj2763: [JLOI2011]飞行路线
- <PTA>树的同构
- Android 修改默认来电他,通知铃声
- Codeforces Round #432 题解
- laravel5.1 部署到lnmp
- 单链表中是否有环的问题
- [BZOJ2763][JLOI2011]飞行路线(图论)
- 字符串的全排列next_permutaion
- 51nod 1158 全是1的最大子矩阵
- Angular 信息管理表
- 插入排序
- 导弹拦截
- SSM整合所遇的坑
- hdu 1198Farm Irrigation
- 工厂学习总结(简写)