haut 1262 魔法寶石 dij 堆優化)

2021-07-31 02:51:32 字數 841 閱讀 1108

時間限制: 2 秒  記憶體限制: 64 mb

提交: 346  解決: 85 提交

狀態 題目描述

小s想要創造n種魔法寶石。小s可以用ai的魔力值創造一棵第i種魔法寶石,或是使用兩個寶石合成另一種寶石(不消耗魔力值)。請你幫小s算出合成某種寶石的所需的最小花費。 輸入

第一行為資料組數t(1≤t≤3)。

對於每組資料,首先一行為n,m(1≤n,m≤10^5)。分別表示魔法寶石種類數和合成魔法的數量。

之後一行n個數表示a1到an。(1≤ai≤10^9)。a_i表示合成第i種寶石所需的魔力值。

之後n行,每行三個數a,b,c(1≤a,b,c≤n),表示乙個第a種寶石和第b種寶石,可以合成乙個第c種寶石。 輸出

每組資料輸出一行n個數,其中第i個數表示合成第i種寶石的魔力值最小花費。

樣例輸入

1

3 11 1 10

1 2 3

樣例輸出

1 1 2

提示**

#include #include using namespace std;

typedef long long ll;

typedef pairq;

const int n = 1e5+7;

const int inf = 0x3f3f3f3f;

const int mod = 10007;

int a[n];

vectorp[n];

int n, m;

int vis[n];

void bfs()}}

return ;}

int main()

for(int i=0;i

HAUT校賽 魔法寶石 暴力

時間限制 2 秒 記憶體限制 64 mb 提交 505 解決 149 提交 狀態 題目描述 小s想要創造n種魔法寶石。小s可以用ai的魔力值創造一棵第i種魔法寶石,或是使用兩個寶石合成另一種寶石 不消耗魔力值 請你幫小s算出合成某種寶石的所需的最小花費。輸入 第一行為資料組數t 1 t 3 對於每組...

HAUTOJ 1262魔法寶石 優先佇列

題目鏈結 比賽場上是暴力懟過去的,回來補題學了個優先佇列的想法 因為寶石的合成情況可能有巢狀,比如1和2生成3,1和3生成2,2和3生成1,如果用dp去做的話,那麼就會形成乙個迴路,就沒辦法當做樹形dp搞了 所以我們要想到,如果出現了某個生成環,那麼其環三個元素中,魔力值最小的那個一定不可被更新,所...

魔法寶石 spfa

時間限制 2 秒 記憶體限制 64 mb 提交 248 解決 48 提交 狀態 題目描述 小s想要創造n種魔法寶石。小s可以用ai的魔力值創造一棵第i種魔法寶石,或是使用兩個寶石合成另一種寶石 不消耗魔力值 請你幫小s算出合成某種寶石的所需的最小花費。輸入 第一行為資料組數t 1 t 3 對於每組資...