給定n個點的帶權有向圖,求從1到n的路徑中邊權之積最小的簡單路徑。
(來自題解)
首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?
由於log(n*m)=log(n)+log(m)
ok,這道題到此結束
我們只要把乘積轉化為對數,最後再還原就可以了,因為精度要求,所以還是記錄路徑好些。
#include#include#include
#include
#include
#include
using
namespace
std;
intn,m;
const
int n=1003,inf=1
<<30
;struct
node
node(){}
};vector
g[n];
int sz[n],path[n][2
];double
dis[n];
struct
nd nd(){}
bool
operator
< (const nd & o) const
};priority_queue
q;void
dijk()}}
}int ans=1,mod=9987
;void
get_path()
}int
main()
for(int i=1;i<=n;i++)
sz[i]=g[i].size() ;
dijk();
get_path();
printf(
"%d\n
",ans);
return0;
}
P2384 最短路 最短路
狗哥做爛了最短路,突然機智的考了bosh一道,沒想到把bosh考住了.你能幫bosh解決嗎?他會給你 100000000000000000000000000000000000 10 金幣w 給定n個點的帶權有向圖,求從1到n的路徑中邊權之積最小的簡單路徑。第一行讀入兩個整數n,m,表示共n個點m條邊...
洛谷 2384 最短路
題解 直接把鬆弛操作中dis to dis now e i dis改成dis to dis now e i dis是不行的,因為這樣做會爆long long.同時也可以發現在最短路中我們並不能邊鬆弛邊取模,這會導致答案錯誤。其實我們可以把邊權取個log.因為log m n logn logm,所以轉...
刷題 最短路 猴子
很神奇的轉換 有n只猴子,第一只尾巴掛在樹上,剩下的n 1只,要麼被其他的猴子抓住,要麼抓住了其他的猴子,要麼兩者均有。當然乙隻猴子最多抓兩隻另外的猴子。現在給出這n只猴子抓與被抓的資訊,並且在某個時刻可能某只猴子會放掉它其中乙隻手的猴子,導致某些猴子落地。求每只猴子落地的時間。luogu大佬原話 ...