description
小x得到了乙個小道訊息,傳說中的神島阿瓦隆在格陵蘭海的某處,據說那裡埋藏著亞瑟王的寶藏,這引起了小x的好奇,但當他想前往阿瓦隆時發現那裡只有聖誕節時才能到達,然而現在已經春天了,不甘心的他將自己的目的地改成了世界樹,他耗費了大量的時間,終於將自己傳送到了世界樹下。世界樹是一棵非常巨大的樹,它有著許許多多的枝條以及節點,每個節點上都有乙個平台。好不容易來到傳說中的世界樹下,小x當然要爬上去看看風景。小x每經過一條邊都會耗費體力值。然而世界樹之主想給他弄(gáo)些(dǐan)麻(shì)煩(qíng),於是他在每條邊上都設了乙個魔法陣,當小x踏上那條邊時會被傳送回根節點,魔法陣只生效一次。這豈不是要累死小x?幸運的是,每個平台上都有無數個加速器,這些加速器可以讓小x在當前節點所連的邊上耗費的體力值減少,不同平台的加速器效能不一定相同,但同乙個平台的加速器效能絕對相同。世界樹之主給了小x一次「換根」的機會,他可以將世界樹的任何乙個節點變為根,但所有的邊都不能改變。小x想問你,將根換為哪個節點能使小x爬到世界樹上的每個節點耗費的體力值和最少。預設編號為1的點為初始根。
input
第一行乙個數n,表示有n個節點。
第二行n個數ai,表示每個平台上的加速器的效能。
第三至n+1行,每行三個數bi,ci,di分別表示這條無向邊的起點,終點與耗費的能量值
output
第一行乙個數,表示要換成的節點,如果有多個點為根時耗費的體力值都最小,則輸出編號最小的那個。如果保持為1是最優的,就輸出1。
第二行乙個數,表示最小耗費的體力值。
sample input
4sample output2 1 3 3
1 2 3
1 3 4
2 4 6
1data constraint9
對於20%的資料:n<=100
對於40%的資料:n<=1000
對於60%的資料:n<=8000
對於80%的資料:n<=100000
對於100%的資料:0solution
首先暴力算出乙個以某個節點為根所需的能量,然後從這個點在dfs一次,推導出以其他n個點為根所需能量。
1 #include 2view codeusing
namespace
std;
3struct
arr 4;
8 arr edge[2000000];9
int ls[1000000],n,p[1000000],son[1000000
],e;
10long
long s[1000000
],minn;
11bool f[1000000
];12
int dfs(int
x)13
25 i=edge[i].next;26}
27}28int bdfs(int
x)29
43 f[k]=false;44
bdfs(k);45}
46 i=edge[i].next;47}
48}49int
main()
5065
for (int i=1;i<=n;i++)
66 f[i]=true
;67 f[1]=false
;68 dfs(1
);69
for (int i=1;i<=n;i++)
70 f[i]=true
;71 f[1]=false
;72 minn=s[1
];73 e=1
;74 bdfs(1
);75 printf("
%d\n
",e);
76 printf("
%lld\n
",minn);
77 }
JZOJ4823 小W學物理
為了測試小w的物理水平,mr.x在二維座標系中放了n面鏡子 鏡子座標絕對值不超過m 鏡子均與座標軸成45 角,所以一共有兩種型別 和 原點不會有鏡子,任意一點最多只有一面鏡子。鏡子兩個面都能反光,而中間不透光,例如,對於乙個 型鏡子,下方向射入的光線會被反射到右方向,左方向射入的光線會被反射到上方向...
JZOJ 4823 小W學物理
為了測試小w的物理水平,mr.x在二維座標系中放了n面鏡子 鏡子座標絕對值不超過m 鏡子均與座標軸成45 角,所以一共有兩種型別 和 原點不會有鏡子,任意一點最多只有一面鏡子。鏡子兩個面都能反光,而中間不透光,例如,對於乙個 型鏡子,下方向射入的光線會被反射到右方向,左方向射入的光線會被反射到上方向...
JZOJ4823 小W學物理
給定乙個二維平面,平面上有 n 個鏡子,每個鏡子都成45 角擺放。現從 0,0 沿x軸正方向射出一道光線,求經過 t 路程後,終點的座標。data constraint n 100000,t 1018 先排個序,然後預處理出每個鏡子四個方向上的第乙個鏡子是哪個點。然後在模擬地做一遍即可。需要注意,有...