【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
定义dis[i][j]表示到达i这个点。
用掉了j次去除边的机会的最短路。
dis[1][0]= 0;
在写松弛条件的时候。
如果用了去除边的机会。
就把机会+1再更新最短路就好。
用spfa会超时。
写个dijkstra+优先队列优化就ok
在dis[n][0..k]中找最小值就好。
【代码】
#include <bits/stdc++.h>
#define LL long long
#define ms(a,b) memset(a,b,sizeof a)
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
const LL mod=1000000007;
LL powmod(LL a,LL b) {LL res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
LL gcd(LL a,LL b) { return b?gcd(b,a%b):a;}
// head
using namespace std;
const int N = 1e5;
const int K = 10;
const int M = 2e5;
struct abc
{
int en,w,nex;
}bian[M+10];
int n,m,k,fir[N+10],totm;
LL dis[N+10][K+5];
multiset< pair<LL,pair<int,int> > > myset;
multiset< pair<LL,pair<int,int> > >::iterator it;
int main(){
while (n>0){
n/=2;
n++;
n--;
n/=2;
}
ios::sync_with_stdio(0),cin.tie(0);
int T;
cin >> T;
while (T--){
memset(fir,255,sizeof fir);
totm = 0;
cin >> n >> m >> k;
rep1(i,1,m){
int x,y,z;
cin >> x >> y >> z;
totm++;
bian[totm].nex = fir[x];
fir[x] = totm;
bian[totm].en = y;
bian[totm].w = z;
}
memset(dis,255,sizeof dis);
dis[1][0] = 0;
myset.insert(make_pair(0,make_pair(1,0)));
while (!myset.empty()){
pair<LL,pair<int,int> > temp = (*myset.begin());
myset.erase(myset.begin());
int x = temp.second.first,times = temp.second.second;
for (int i = fir[x];i!=-1;i = bian[i].nex)
{
int y = bian[i].en;LL w = bian[i].w;
if (dis[y][times]==-1 || dis[y][times]>dis[x][times]+w){
if (dis[y][times]!=-1){
it = myset.find(make_pair(dis[y][times],make_pair(y,times)));
myset.erase(it);
}
dis[y][times] = dis[x][times]+w;
myset.insert(make_pair(dis[y][times],make_pair(y,times)));
}
if (times+1<=k && ( dis[y][times+1]==-1 || dis[y][times+1]>dis[x][times]))
{
if (dis[y][times+1]!=-1)
{
it = myset.find(make_pair(dis[y][times+1],make_pair(y,times+1)));
myset.erase(it);
}
dis[y][times+1] = dis[x][times];
myset.insert(make_pair(dis[y][times+1],make_pair(y,times+1)));
}
}
}
LL mi = dis[n][0];
for (int i = 1;i <= k;i++)
if (dis[n][i]!=-1){
mi = min(mi,dis[n][i]);
}
cout<<mi<<endl;
}
return 0;
}
【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze的更多相关文章
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze
262144K There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v ...
- ACM-ICPC 2018 南京赛区网络预赛 L.Magical Girl Haze(分层最短路)
There are N cities in the country, and M directional roads from u to v(1≤u,v≤n). Every road has a di ...
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze 最短路+分层图
类似题解 There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u, ...
- ACM-ICPC 2018 南京赛区网络预赛 - L Magical Girl Haze (分层迪杰斯特拉)
题意:N个点,M条带权有向边,求可以免费K条边权值的情况下,从点1到点N的最短路. 分析:K<=10,用dist[i][j]表示从源点出发到点i,免费j条边的最小花费.在迪杰斯特拉的dfs过程中 ...
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze (分层dijkstra)
There are NN cities in the country, and MMdirectional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). ...
- ACM-ICPC 2018 南京赛区网络预赛 L题(分层最短路)
题目链接:https://nanti.jisuanke.com/t/31001 题目大意:给出一个含有n个点m条边的带权有向图,求1号顶点到n号顶点的最短路,可以使<=k条任意边的权值变为0. ...
- ACM-ICPC 2018 南京赛区网络预赛 L 【分层图最短路】
<题目链接> 题目大意: 有N个城市,这些城市之间有M条有向边,每条边有权值,能够选择K条边 边权置为0,求1到N的最短距离. 解题分析: 分层图最短路模板题,将该图看成 K+1 层图,然 ...
- ACM-ICPC 2018 南京赛区网络预赛 L题(分层图,堆优化)
题目链接: https://nanti.jisuanke.com/t/31001 超时代码: #include<bits/stdc++.h> using namespace std; # ...
- ACM-ICPC 2018 南京赛区网络预赛 L && BZOJ 2763 分层最短路
https://nanti.jisuanke.com/t/31001 题意 可以把k条边的权值变为0,求s到t的最短路 解析 分层最短路 我们建立k+1层图 层与层之间边权为0,i 向 i+1层转 ...
随机推荐
- sass基础教程
1. 使用变量; $highlight-color: #F90; .selected { border: 1px solid $highlight-color; } //编译后 .selected { ...
- [WPF]c#调用默认浏览器打开网址
//调用系统默认的浏览器 System.Diagnostics.Process.Start("http://www.zhaokeli.com");
- 国外物联网平台初探(三) ——IBM Watson IoT
平台定位 提供全面管理的云托管服务,旨在简化并从 IoT 设备中获得价值. Watson IoT Platform 提供对 IoT 设备和数据的强大应用程序访问,可快速编写分析应用程序.可视化仪表板和 ...
- 国外物联网平台初探(一) ——亚马逊AWS IoT
平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...
- 【JSOI 2008】 球形空间产生器
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1013 [算法] 高斯消元 [代码] #include<bits/stdc++. ...
- 【转】iOS程序自动检测更新的实现 -- 思路不错
原文网址:http://blog.csdn.net/davidsph/article/details/8931718 之前项目需要用到app自动更新的功能,现将实现方案分享出来.iOS程序自动提示更新 ...
- ELK+kafka日志收集
一.服务器信息 版本 部署服务器 用途 备注 JDK jdk1.8.0_102 使用ELK5的服务器 Logstash 5.1.1 安装Tomcat的服务器 发送日志 Kafka降插件版本 Log ...
- JXOI2019 退役记
day0 考前一天在机房和RyeCatcher,还有高一数竞大佬wyt一起颓三国杀,被深深吸引无法自拔,所谓大考大浪,也算是缓解缓解压力 刷刷空间发现好多外地OIer都赶到江科了,萌生出去见一见我江西 ...
- Java中利用随机数的猜拳游戏
Java中利用随机数的猜拳游戏,实现非常简单,重难点在于随机数的产生. 首先GameJude类是用于判断输赢的一个类: package testGame; public class GameJudge ...
- 基于scrapy-redis组件的分布式爬虫
scrapy-redis组件安装 分布式实现流程 scrapy-redis组件安装 - 下载scrapy-redis组件:pip install scrapy-redis - 更改redis配置文件: ...