令n=(1<<17)-1。
首先很容易想到建圖,跑最短路,不過有多次查詢,如果每次都跑最短路的話要m*n*logn,會t。
所以可能是我們模型建的太一般化了,需要考慮題目的特殊性。
s到t的最少變化次數本質上等於0到s^t的最少變化次數。
所以我們只要求一次單源最短路徑就可以了,只要nlogn的複雜度。
#pragma comment(linker, "/stack:102400000,102400000") #include#include
#include
#include
#include
using
namespace
std;
const
int maxn = 1
<< 17
;const
int mod = 1e9 + 7
;const
int inf =1e9;
typedef
long
long
ll;vector
g[maxn];
int arr[22
];int
n, m;
intinq[maxn], d[maxn];
void
spfa() }}
}}void
init()
intmain()
for (int j = 0; j < 17; j++)
}spfa();
ll ans = 0
;
for (int i = 1; i <= m; i++)
printf(
"%lld\n
", ans);
}return0;
}
HDU 2544 單源最短路
最短路 time limit 1000ms memory limit 65536k 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?輸入包括...
hdu2544 最短路 單源最短路徑
一 原題內容 problem description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料...
hdu 3790 單源最短路dijkstra)
題意 每條邊都有長度d 和花費p,給你起點s 終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。解析 考察對dijkstra的理解。include include include include include include include include i...