月亮之眼
描述
吉兒是一家古董店的老闆娘,由於她經營有道,小店開得紅紅火火。昨天,吉兒無意之中得到了散落民間幾百年的珍寶—月亮之眼。吉兒深知「月亮之眼」價值連城:它是由許多珍珠相連而成的,工匠們用金線連線珍珠,每根金線連線兩個珍珠;同時又對每根金線染上兩種顏色,一半染成銀白色,一半染成黛黑色。由於吉兒自小熟讀古籍,所以還曉得「月亮之眼」的神秘傳說:「月亮之眼」原是乙個古代寺廟的寶物,原本是掛在佛堂的一根頂梁柱上的,整個寶物垂直懸掛,所有珍珠排成一線,且都鑲嵌在柱子裡,而每一根金線又都是繃緊的,並且金線的銀白色一端始終在黛黑色一端的上方;然而,在乙個月圓之夜,「月亮之眼」突然從柱裡飛出,掉落下來,寶物本身完好無損,只是僧侶們再也無法以原樣把「月亮之眼」嵌入柱子中了。吉兒望著這個神秘的寶物,回憶著童年讀到的傳說,頓時萌發出恢復「月亮之眼」的衝動,但是擺弄了幾天依舊沒有成功。
現在,要麻煩您來幫助吉兒完成這項使命。
您要設計乙個程式,對於給定的「月亮之眼」進行周密分析,然後給出這串寶物幾百年前嵌在佛堂頂梁柱上的排列模樣。給定的「月亮之眼」有n個珍珠和p根金線,所有珍珠按一定順序有了乙個序號:1、2…、n。
格式
輸入格式
輸入資料報含乙個「月亮之眼」的特徵描述:
檔案第一行有兩個整數n和p,其中n表示寶物中的珍珠個數,p表示寶物中的金線根數;
以下p行描述珍珠連線情況:
檔案第i+1行有三個整數,ri1,ri2,li。其中ri1表示第i根金線的銀白色一端連線的珍珠序號;ri2表示第i根金線的黛黑色一端連線的珍珠序號;li表示第i根金線的長度。
輸出格式
由於珍珠尺寸很小,所以幾個珍珠可以同時鑲嵌在乙個位置上。
您的輸出資料描述的是「月亮之眼」各個珍珠在頂梁柱上的位置,輸出檔案共n行:
第i行,乙個整數s,它表示標號為i的珍珠在頂梁柱上距離最高位置珍珠的距離。
注意:若無解則輸出僅一行,包含乙個整數「-1」。
樣例1
樣例輸入1
9 9
1 2 3
2 3 5
2 7 1
4 5 4
5 6 1
5 9 1
6 7 1
7 8 3
9 8 4
樣例輸出1
2510
0456
95
#include
#include
#define maxn 505
using
namespace std;
int p[maxn]
, v[maxn]
, n, m;
//v表示距離根節點的距離,p表示父節點是誰
intfind
(int x)
intmerg
(int x,
int y,
int l)
else
if(v[x]
+ l != v[y]
)//因為繩子是緊繃的,所以應該相加相等
return-1
;return1;
}int
main()
}for
(int i =
1; i <= m; i++
)find
(i);
//重新計算他們的跟?
for(
int i =
1; i <= m; i++
)printf
("%d\n"
, v[i]);
return0;
}
vijos 1540 月亮之眼 並查集
題目 吉兒是一家古董店的老闆娘,由於她經營有道,小店開得紅紅火火。昨天,吉兒無意之中得到了散落民間幾百年的珍寶 月亮之眼。吉兒深知 月亮之眼 價值連城 它是由許多珍珠相連而成的,工匠們用金線連線珍珠,每根金線連線兩個珍珠 同時又對每根金線染上兩種顏色,一半染成銀白色,一半染成黛黑色。由於吉兒自小熟讀...
CTSC1999 帶權並查集 月亮之眼
description 吉兒是一家古董店的老闆娘,由於她經營有道,小店開得紅紅火火。昨天,吉兒無意之中得到了散落民間幾百年的珍寶 月亮之眼。吉兒深知 月亮之眼 價值連城 它是由許多珍珠相連而成的,工匠們用金線連線珍珠,每根金線連線兩個珍珠 同時又對每根金線染上兩種顏色,一半染成銀白色,一半染成黛黑色...
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...