free

题意

给出一个带权联通无向图,你需要从s走到t,你可以选择k条变让他们的权值为0问从s到t的最小权值是多少?

分析

思考一下,如果不带k条白嫖这个条件,那么这就是一个简单的dji就搞定了,我们再来看k的范围1000 直接乘上dji的复杂度还能过,空间也开的下,所以直接一个二维dji就搞定了

#include<bits/stdc++.h>
#include<vector>
#include<algorithm>
using namespace std;
#define pb push_back
#define F first
#define S second
#define mkp make_pair
const int maxn=1e3+5;
#define int ll
typedef long long ll;
const int inf=1e10;
int n,m,s,t,k,x,y,v;
int head[maxn],dist[maxn][maxn],vis[maxn][maxn];
struct ZZ{
int to,v,next;
}edge[maxn*4];
int cnt=0;
void add(int x,int y,int v){
edge[cnt].to=y;
edge[cnt].v=v;
edge[cnt].next=head[x];
head[x]=cnt++;
}
struct Node{
int v,id,cishu;
Node(int _v,int _id,int _cishu):v(_v),id(_id),cishu(_cishu){}
bool operator<(const Node&a)const {
return v>a.v;
}
};
priority_queue<Node>q;
void dij(){
for(int i=0;i<=n;i++){
for(int j=0;j<=k;j++){
vis[i][j]=0;
dist[i][j]=inf;
}
}
while(!q.empty())q.pop();
dist[s][k]=0;
q.push(Node(0,s,k));
while(!q.empty()){
auto tmp=q.top();
q.pop();
if(vis[tmp.id][tmp.cishu])continue;
vis[tmp.id][tmp.cishu]=1;
for(int i=head[tmp.id];i!=-1;i=edge[i].next){
int y=edge[i].to;
if(!vis[y][tmp.cishu]&&dist[y][tmp.cishu]>dist[tmp.id][tmp.cishu]+edge[i].v){
dist[y][tmp.cishu]=dist[tmp.id][tmp.cishu]+edge[i].v;
q.push(Node(dist[y][tmp.cishu],y,tmp.cishu));
}
if(tmp.cishu-1>=0&&!vis[y][tmp.cishu-1]&&dist[y][tmp.cishu-1]>dist[tmp.id][tmp.cishu]){
dist[y][tmp.cishu-1]=dist[tmp.id][tmp.cishu];
q.push(Node(dist[y][tmp.cishu-1],tmp.id,tmp.cishu-1));
}
} }
ll ans=inf;
for(int i=0;i<=k;i++)ans=min(ans,dist[t][i]);
printf("%lld\n",ans);
//cout<<dist[t][0]<<endl;
}
int32_t main(){
scanf("%lld%lld%lld%lld%lld",&n,&m,&s,&t,&k);
for(int i=0;i<=n;i++)head[i]=-1;
for(int i=0;i<m;i++){
scanf("%lld%lld%lld",&x,&y,&v);
add(x,y,v);
add(y,x,v);
// add(x,y,-1);
// add(y,x,-1);
}
dij(); return 0;
}

2019牛客多校第四场J free 最短路的更多相关文章

  1. 2019牛客多校第四场J free——分层图&&最短路

    题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...

  2. 牛客多校第四场 J Free 最短路

    题意: 求最短路,但是你有k次机会可以把路径中某条边的长度变为0. 题解: 跑k+1次迪杰斯特拉,设想有k+1组dis数组和优先队列,第k组就意味着删去k条边的情况,每次松弛操作,松弛的两点i,j和距 ...

  3. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  4. 2019牛客多校第四场 A meeting

    链接:https://ac.nowcoder.com/acm/contest/884/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10485 ...

  5. 2019牛客多校第四场B xor——线段树&&线性基的交

    题意 给你 $n$ 个集合,每个集合中包含一些整数.我们说一个集合表示一个整数当且仅当存在一个子集其异或和等于这个整数.现在你需要回答 $m$ 次询问 ($l, r, x$),是否 $l$ 到 $r$ ...

  6. 2019牛客多校第四场A meeting——树的直径

    题意: 一颗 $n$ 个节点的树上标有 $k$ 个点,找一点使得到 $k$ 个关键结点的最大距离最小. 分析: 问题等价于求树的直径,最小距离即为直径除2向上取整. 有两种求法,一是动态规划,对于每个 ...

  7. [2019牛客多校第四场][G. Tree]

    题目链接:https://ac.nowcoder.com/acm/contest/884/G 题目大意:给定一个树\(A\),再给出\(t\)次询问,问\(A\)中有多少连通子图与树\(B_i\)同构 ...

  8. 2019牛客多校第四场D-triples I 贪心

    D-triples 题意 给你一个\(n\),问至少有几个数或运算起来可以等于\(n\),并且输出数量和这个几个数.题目说明给的\(n\)一定符合条件(不会输出\(n= 1\) 之类不存在情况). 思 ...

  9. 2019牛客多校第四场C-sequence(单调栈+线段树)

    sequence 题目传送门 解题思路 用单调栈求出每个a[i]作为最小值的最大范围.对于每个a[i],我们都要乘以一个以a[i]为区间内最小值的对应的b的区间和s,如果a[i] > 0,则s要 ...

随机推荐

  1. springboot的yml配置文件里有多个参数的调用方式

    本篇教程适用于配置文件一级下有多个二级或三级时,如何在service层不用通过多个@Value就能获取配置文件的参数 例如yml配置是这样的: 如果service层要引用这些参数,用多个@Value( ...

  2. sqli-labs less-5 --> less-6

    盲注笔记: SQL盲注攻击:只有两种回显结果,错误和正确:无法用url查询爆出数据库的信息:回显注入语句中加入判断方式,使得回显结果为true或者false: SQL盲注分类:布尔盲注,时间盲注,报错 ...

  3. jQuery中校验时间格式的正则表达式小结

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. Codeforces 1304D. Shortest and Longest LIS 代码(构造 贪心)

    https://codeforces.com/contest/1304/problem/D #include<bits/stdc++.h> using namespace std; voi ...

  5. Codeforces #454 div1 C party(状态压缩bfs)

    题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团. 解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点 ...

  6. Qt Installer Framework翻译(8)

    好了,到这里翻译就结束了.各位可以下载源码,结合examples示例,使用repogen和binarycreator好好实操一下,就能掌握基础用法了.祝各位使用顺利. 官方文档网址:https://d ...

  7. 分析器错误消息: Reference.svcmap:未能加载文件

    -------------- 缺少了:System.Web.Razor.dll

  8. Xamarin.Android 开发,生成时提示“Resource.Drawable”未包含“BG”的定义

    Xamarin Android提示Resource.Drawable”未包含“BG”的定义错误信息:error CS0117: '“Resource.Drawable”未包含“BG”的定义Xamari ...

  9. Python中pip的使用

    1.pip安装模块 pip install 模块名称 -i 安装源 pip install requests -i https://mirrors.aliyun.com/pypi/simple/

  10. navicat异常 - 1130-host ... is not allowed to connect to this MySql server

    错误描述 用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理 解决方案 1.连接服务器: ...