bzoj 2763 [JLOI2011]飞行路线 Dijikstra 分层
2017-08-10 20:14
295 查看
k<=10,所以每用一次机会就跳到一个新图中,
每一个图按原图建边,相邻两图中建边权为0的边
补一补dj,好像我以前觉得dj特别难,hhhhh
每一个图按原图建边,相邻两图中建边权为0的边
补一补dj,好像我以前觉得dj特别难,hhhhh
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<iostream> #define N 500500 using namespace std; int n,m,k,S,T; struct point{ int st,dis; bool operator < (const point &a)const{ return dis>a.dis; } }p ; int e=1,head ,dis ; bool bo ; struct edge{ int u,v,w,next; }ed[5000500]; void add(int u,int v,int w){ ed[e].u=u; ed[e].v=v; ed[e].w=w; ed[e].next=head[u]; head[u]=e++; } priority_queue<point> q; int dijkstra(){ memset(dis,0x7f,sizeof dis); memset(bo,0,sizeof bo); dis[S]=0;q.push((point){S,0}); while(!q.empty()){ point now=q.top();q.pop(); if(bo[now.st]) continue; bo[now.st]=1; for(int i=head[now.st];i;i=ed[i].next) if(dis[now.st]+ed[i].w<dis[ed[i].v]){ dis[ed[i].v]=dis[now.st]+ed[i].w; q.push((point){ed[i].v,dis[ed[i].v]}); } } int ans=0x7fffffff; for(int i=0;i<=k;i++) ans=min(ans,dis[i*n+T]); return ans; } int main(){ scanf("%d%d%d",&n,&m,&k); scanf("%d%d",&S,&T);S++;T++; int u,v,w; for(int i=1;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); u++;v++; for(int j=0;j<=k;j++){ add(j*n+u,j*n+v,w),add(j*n+v,j*n+u,w); if(j<k)add(j*n+u,(j+1)*n+v,0),add(j*n+v,(j+1)*n+u,0); } } int ans=dijkstra(); printf("%d\n",ans); return 0; }
相关文章推荐
- bzoj 2763 [JLOI2011]飞行路线 Dijikstra 分层
- BZOJ 2763 [JLOI2011]飞行路线 Dijikstra
- 【bzoj2763】 JLOI2011飞行路线 分层最短路
- BZOJ ~ 2763 ~ [JLOI2011]飞行路线 (分层图最短路,模板题)
- 【bzoj2763】[JLOI2011]飞行路线 (分层图最短路)(优先队列dij)
- bzoj2763: [JLOI2011]飞行路线(分层图spfa)
- BZOJ2763 [JLOI2011]飞行路线 【分层图 + 最短路】
- BZOJ 2763 [JLOI2011]飞行路线 - Dijkstra+分层图/DP
- 分层图最短路【bzoj2763】: [JLOI2011]飞行路线
- bzoj2763[JLOI2011]飞行路线 分层图最短路
- bzoj2763 [JLOI2011]飞行路线 Dijkstra
- BZOJ 2763 [JLOI2011]飞行路线
- BZOJ2763 [JLOI2011]飞行路线 【分层图 + 最短路】
- 【bzoj2763】【JLOI2011】【飞行路线】【dp+spfa】
- [BZOJ2763][JLOI2011]飞行路线
- bzoj 2763 JLOI 2011 飞行路线 分层图+spfa
- Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
- BZOJ 2763: [JLOI2011]飞行路线
- 【JLOI2011】【bzoj2763】飞行路线 分层图最短路
- Dijkstra BZOJ2763 [JLOI2011]飞行路线