题意:

给你边权,起点和终点,有k次机会把某条路变为0,问你最短路是多长。

思路:

分层最短路模板题。题目有点坑(卡掉了SPFA,只能用dijkstra跑的算法)。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; const int MAXN=1e3,MAXM=5e3,MAXK=,INF=~0U>>;
int N,M,K;
int S,T; struct E{int to,next,value;} e[*MAXM*(MAXK+)+MAXK+];int ecnt,G[MAXN*(MAXK+)+];
void addEdge(int u,int v,int w){e[++ecnt]={v,G[u],w};G[u]=ecnt;} void readInt(int & x)
{
x=;
bool flag=false;
char c;
do c=getchar(); while(c!='-'&&(c<''||c>''));
if(c=='-') flag=true;
else x+=c-'';
c=getchar();
while(c>=''&&c<='')
{
x*=;
x+=c-'';
c=getchar();
}
} inline void read()
{
int i,j;
readInt(N);readInt(M);
readInt(S);readInt(T);readInt(K);
for(i=;i<=M;i++)
{
int u,v,w;
readInt(u);readInt(v);readInt(w);
for(j=;j<=K;j++)
{
addEdge(u+N*j,v+N*j,w);
addEdge(v+N*j,u+N*j,w);
if(j!=K)
{
addEdge(u+N*j,v+N*(j+),);
addEdge(v+N*j,u+N*(j+),);
}
}
}
} struct HN{int id,v;bool operator<(const HN & ot)const{return v>ot.v;}}; priority_queue<HN> heap; bool inS[MAXN*(MAXK+)+];
int dis[MAXN*(MAXK+)+]; void dijkstra(int v0)
{
int i;
for(i=;i<=N*(K+);i++) dis[i]=INF;
memset(inS,false,sizeof(inS));
dis[v0]=;
heap.push((HN){v0,});
while(!heap.empty())
{
int u=heap.top().id;heap.pop();
if(inS[u]) continue;
inS[u]=true;
for(i=G[u];i;i=e[i].next)
{
int v=e[i].to;
if(!inS[v])
if(dis[v]>dis[u]+e[i].value)
{
dis[v]=dis[u]+e[i].value;
heap.push((HN){v,dis[v]});
}
}
}
} int main()
{
//freopen("Motor.in","r",stdin);
//freopen("Motor.out","w",stdout);
int i;
read();
dijkstra(S);
int ans=INF;
for(i=;i<=K;i++) ans=min(ans,dis[T+N*i]);
printf("%d",ans);
return ;
}

分层最短路(牛客第四场)-- free的更多相关文章

  1. %300为0的个数(牛客第四场)-- number

    题意: 给你一串数,问你如题. 思路: 我不是这样的作法,从后往前,先取00,再算%3==0的个数,往前推的时候有递推关系: #define IOS ios_base::sync_with_stdio ...

  2. 3的倍数 或运算构造x(牛客第四场)-- triples I

    题意: 给你一个数,希望你能用最少的3的倍数或运算成它,让你输出答案. 思路: 进制%3有规律,1.2.4.8.16%3是1.2.1.2.1 ... 利用这一点分情况取一些位合成一些数就是答案了. # ...

  3. 笛卡尔树--牛客第四场(sequence)

    思路: O(n)建一颗笛卡尔树,再O(n)dfs向上合并答案就行了. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include &l ...

  4. 线性基求交(线段树)--牛客第四场(xor)

    题意: 给你n个基,q个询问,每个询问问你能不能 l~r 的所有基都能表示 x . 思路: 建一颗线性基的线段树,up就是求交的过程,按照线段树区间查询的方法进行check就可以了. #define ...

  5. 最短meeting路线(树的直径)--牛客第四场(meeting)

    题意: 给你一棵树,树上有些点是有人的,问你选一个点,最短的(最远的那个人的距离)是多少. 思路: 其实就是树的直径,两遍dfs,dfs第二遍的时候遇到人就更新直径就行了,ans是/2,奇数的话+1. ...

  6. 牛客第三场多校 H Diff-prime Pairs

    链接:https://www.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy has solved lots of problem involving calcul ...

  7. 牛客第五场多校 J plan 思维

    链接:https://www.nowcoder.com/acm/contest/143/J来源:牛客网 There are n students going to travel. And hotel ...

  8. 2019牛客第八场多校 E_Explorer 可撤销并查集(栈)+线段树

    目录 题意: 分析: @(2019牛客暑期多校训练营(第八场)E_Explorer) 题意: 链接 题目类似:CF366D,Gym101652T 本题给你\(n(100000)\)个点\(m(1000 ...

  9. 牛客网第二场Jfarm(随机化+二维前缀和)

    链接:https://www.nowcoder.com/acm/contest/140/J 来源:牛客网 White Rabbit has a rectangular farmland of n*m. ...

随机推荐

  1. bzoj3990

    排序 HYSBZ - 3990 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1<=i<=N) ...

  2. 2.微服务开发框架——Spring Cloud

                     微服务开发框架—Spring Cloud 2.1. Spring Cloud简介及其特点 简介: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见 ...

  3. LeetCode 142. 环形链表 II(Linker List Cycle II)

    题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶: 你是否可以不用额外空间解决此题? 解题思路 分为三步: 首先判断是否存在 ...

  4. Springboot websocket使用

    1)基本概念 1.http与websocket http超文本传输协议,大家都非常熟悉,http有1.0.1.1. 2.0几个版本,从http1.1起,默认都开启了Keep-Alive,保持连接持续性 ...

  5. 认识git的简单命令

    一.课程目的 教大家学会it的简单命令(老师建议 English 的前后要加空格) 二.认识 git 命令 整篇文章都是用语雀写的. 解释了(使用git)绑定gitee的操作 https://www. ...

  6. pycharm2019连接mysql错误:08801 ------Connection to django1@localhost failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.

  7. SQL Server 数据库设计、命名、编码规范

    https://blog.csdn.net/songguozhi/article/details/5858159 SQL Server 数据库设计.命名.编码规范

  8. 一个继承的 DataGridView

    // 允许增加一个 checkbox 列 public class DgvBase : DataGridViewX { protected override void OnColumnAdded(Da ...

  9. js 中实现 汉字按拼音排序

    let arr = ["贵州省", "江苏省", "江西省", "浙江省", "四川省", &quo ...

  10. spring Ioc/DI的理解

    学习spring的童鞋都知道,spring中有两个非常重要的点,Ioc(控制反转)与DI(依赖注入),对于初级玩家来说,这两个概念可能有点模棱两可的感觉,今天就谈下自己的一点理解,不足请多多指教!!! ...