1. 程式人生 > >南京網路賽 L Magical Girl Haze(優先佇列+最短路)

南京網路賽 L Magical Girl Haze(優先佇列+最短路)

我們設定dis[i][k]表示走到第i號點,免費經過了k條邊的最短路。
對於我們當前找到的終點,嘗試起點的狀態去更新,不選擇此條邊免費的狀態和選擇此條邊免費的狀態,再將這兩個狀態壓入佇列去更新可以到達的其他狀態。

#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ll long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 100005
; int n,m,k; vector<pair<int,ll> >ve[N]; ll dis[N][15];//設定dis[i][k]表示走到第i號點,免費經過了k條邊的最短路。 bool vis[N][15]; typedef struct Node{ int a,b; ll dis; friend bool operator < (const Node &p,const Node &q) { return p.dis > q.dis; } }Node; void dijistra() { memset
(dis,inf,sizeof(dis)); memset(vis,false,sizeof(vis)); priority_queue<Node>que; dis[1][0] = 0; que.push(Node{1,0,0}); while(!que.empty()) { Node t = que.top(); que.pop(); if(vis[t.a][t.b]) continue; vis[t.a][t.b] = true; int len = ve[t.a].size(); for
(int i = 0;i < len;++i) { int x = ve[t.a][i].fi; if(dis[x][t.b] > t.dis + ve[t.a][i].se){ dis[x][t.b] = t.dis + ve[t.a][i].se; que.push(Node{x,t.b,dis[x][t.b]}); } if(t.b + 1 <= k){ if(dis[x][t.b + 1] > t.dis){ dis[x][t.b + 1] = t.dis; que.push(Node{x,t.b + 1,dis[x][t.b + 1]}); } } } } } int main() { int t,u,v; scanf("%d",&t); while(t--) { scanf("%d %d %d",&n,&m,&k); for(int i = 1;i <= n;++i) ve[i].clear(); for(int i = 0;i < m;++i) { int u,v; ll c; scanf("%d %d %lld",&u,&v,&c); ve[u].pb(mp(v,c)); } dijistra(); printf("%lld\n",dis[n][k]); } return 0; }

相關推薦

南京網路 L Magical Girl Haze優先佇列+短路

我們設定dis[i][k]表示走到第i號點,免費經過了k條邊的最短路。 對於我們當前找到的終點,嘗試起點的狀態去更新,不選擇此條邊免費的狀態和選擇此條邊免費的狀態,再將這兩個狀態壓入佇列去更新可以到

ACM-ICPC 2018 南京賽區網路預賽 L. Magical Girl Hazedijkstra+分層短路

思路來源 https://blog.csdn.net/zhangche0526/article/details/62881066 題意 給你n個城市,m條邊, 共有k次免費機會,可以將其中k條邊的權值變為0, 求點1到點n的最短路。 題解 (百度 分層圖最短路

2018南京網路 L Magical Girl Haze短路、堆、狀態轉移

我們設定dis[i][k]表示走到第i號點,免費經過了k條邊的最短路。  對於我們當前找到的終點,嘗試起點的狀態去更新,不選擇此條邊免費的狀態和選擇此條邊免費的狀態,再將這兩個狀態壓入佇列去更新可以到達的其他狀態。 #include<cstdio> #include&l

L. Magical Girl Haze 分層圖短路

分層圖最短路的裸題。 #include<iostream> #include<stdio.h> #include<queue> #define LL

ACM-ICPC 2018 南京賽區網路預賽 L. Magical Girl Haze

There are NNN cities in the country, and MMM directional roads from uuu to v(1≤u,v≤n)v(1\le u, v\le n)v(1≤u,v≤n). Every road has a distanc

ACM-ICPC 2018 南京賽區網路預賽 L. Magical Girl Haze

題目傳送門 簡要說下題意: N個城市,有M條邊相連,現在可以任意選中k條邊把這k條邊的長度置位0,然後求從1---N的最短路徑 想到最短路徑沒有負權,基本想到的是Dijkstra。這個演算法主要寫起來比較方便,spfa一樣,個人不喜歡(兩個演算法昆哥上課講過,不懂的

2018 ACM-ICPC南京網路 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,v≤n). Every road has a distance c_ici​. Haz

2018南京網路LMagical Girl Haze 分層圖短路

題目大意: 給你n個點,m條邊,讓你最多可以使k條邊的權值為0,問你1到n的最短路。 分析: dijsktra的距離陣列可以多開一維,記錄已經讓幾條邊的權值為0,即分層圖最短路 #include <iostream> #include <alg

L. Magical Girl Haze(ACM-ICPC 2018 南京賽區網路預賽,分層短路,堆優化的dijkstra)

描述 There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). Every road has a distan

ACM-ICPC 2018 南京賽區網絡預賽 L.Magical Girl Haze

scribe tput size ext lin 大小 mil con describe L.Magical Girl Haze 題目鏈接: https://nanti.jisuanke.com/t/31001 Description There are N cities

ACM-ICPC 2018 南京賽區網絡預賽 L. Magical Girl Haze

default sub col eve -c push vertical ++ %20 262144K There are NN cities in the country, and MM directional roads from uu to v(1\le

2018 icpc區域南京網路 L分層短路

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). Every road has a distance c_ici​. Haz

【ACM-ICPC 2018 南京賽區網路預賽】Magical Girl Haze【分層圖】

Description:    There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). Every road has a dis

L. Magical Girl Haze 分層短路、bfs + 優先佇列+、短路

L-Magical Girl Haze Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 256MB Problem Description There are N cities in the country, and M direc

Magical Girl Haze迪傑斯特拉+dp

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). Every road has a distance c_ici​. Haze

L——Magical Girl Haze 【Dijkstra演算法+分層圖思想】

1000ms 262144K description: There are N cities in the country, and M directional roads from u to v(1≤u,v≤n). Every road has a d

ACM-ICPC 2018 焦作賽區網路預賽 L. Poor God WaterBM/矩陣快速冪

通過本題,學到了一個非常NB的黑科技,杜教BM線性遞推模板 直接打表打出前幾項,丟入BM模板就過了,非常神奇,非常強大 網上說BM板子一般8個以上就穩了,賽後試了一下,這個題要丟入前10個數據才能AC。 #include <cstdio> #includ

[luoguP2622] 關燈問題II狀壓短路

ostream 狀壓 狀壓dp amp queue tps printf size fin 傳送門 本以為是狀壓DP,但是有後效性。 所以寫一手狀壓spfa #include <queue> #include <cstdio>

迷宮遊戲單源短路

style 個人 遊戲 stream cstring ace tin space for 個人心得:對於復雜抽象的算法還是比較模糊,希望以後有待加強。這題就是用dijskrual算法,在算出最短時間的時候進行適當的更改,還是比較模糊。 1459 迷宮遊戲 基準時間限制:1

洛谷P4206 [NOI2005]聰聰與可可期望dp+短路

() noi2005 con int its include for lin pop 傳送門 首先,貓的走位太飄了……只能預處理…… 先對每一個點跑一遍dijkstra跑出最短路,然後再預處理出$nxt[i]