luoguP4568 JLOI2011 飛行路線

2022-05-11 03:34:29 字數 1056 閱讀 1004

題目中 k 的大小只有 10,我們可以考慮建立分層圖跑最短路

相同層中 a -> b 的權值仍為 val,不同層中 a -> b 的權值為 0,相當於免費乘坐了一次飛機

寫乙個最短路就可以啦

#include #define cios ios::sync_with_stdio(false);

#define for(i, a, b) for(register int i = a; i <= b; i++)

#define forr(i, a, b) for(register int i = a; i >= b; i--)

using namespace std;

typedef unsigned long long ull;

typedef long long ll;

template inline void read(_t &f)

while(c >= '0' && c <= '9')

f *= fu;

}template void print(t x)

template void print(t x, char t)

const int n = 4e5 + 5, m = 4e6 + 5;

struct edge g[m];

int head[n];

int n, m, k, s, t, tot;

inline void addedge(int u, int v, int val) , head[u] = tot;

}int dis[n];

priority_queue < pair > q;

void dij(int s) }}

}int main()

dij(s); int ans = 0x7fffffff;

for(register int i = 1; i <= k + 1; i++) ans = min(ans, dis[(i - 1) * n + t]);

cout << ans << endl;

return 0;

}

P4568 JLOI2011 飛行路線

alice 和 bob 現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在nn個城市設有業務,設這些城市分別標記為 00 到 n 1n 1,一共有 mm 種航線,每種航線連線兩個城市,並且航線有一定的 alice 和 bob 現在要從乙個城市沿著航線到達另乙個城市,途中可以進行轉機...

P4568 JLOI2011 飛行路線

alice和bob現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在 nnn 個城市設有業務,設這些城市分別標記為 000 到 n 1n 1n 1 一共有 mmm 種航線,每種航線連線兩個城市,並且航線有一定的 alice和bob現在要從乙個城市沿著航線到達另乙個城市,途中可以進行...

洛谷 4568 JLOI2011 飛行路線

題目戳這裡 一句話題意 有n個點,m條邊的有向圖,最多可以把k條邊變為0,求從起點到終點最短距離。solution 首先看到這題目,感覺賊難,看起來像dp,貌似也有大佬這麼做,但鑑於本蒟蒻思維能力有限,經過大佬點撥後拿出了失傳已久的絕技 分層圖!廢話真多 那麼我們就可以愉快地建圖了,根據題意,建出k...