1. 程式人生 > >一道公式題——數三角形

一道公式題——數三角形

大學 相同 上大 個數 幫助 頂點 我們 表示 body

數三角形(count)

時限:10s 內存:512M

剛剛上大學的潔潔在學習組合數學的過程中遇到一道麻煩的題目,她希望你能幫助她解決。給定一張無向完全圖G,其中大部分邊被染成藍色,但也有一些邊被染成紅色或者綠色。現在,潔潔需要給這張圖的多樣性進行打分。一張圖的多樣性取決於它的同色和異色三角形的個數。具體來說,G中每有一個三邊顏色不同的三角形可以得3分,每有一個三邊顏色相同的三角形則要被扣掉6分,其它三角形不得分也不扣分。

現在,請你寫一個程序來計算G的多樣性分數。

輸入數據:

第一行兩個正整數n和m其中n表示G中頂點的個數,m表示G中紅色或者綠色的邊的條數。

接下來m行每行包括三個整數a b c,代表連接頂點a和頂點b的邊顏色為紅色(c=1)或者綠色(c=2)

輸出數據:

一行,G的多樣性得分 mod 9973 的值。

樣例輸入1

4 3

1 2 1

1 3 1

2 3 1

樣例輸出1

9967

樣例輸入2:

4 4

1 2 1

1 3 1

2 3 1

1 4 2

樣例輸出2

0

數據範圍:

對於20%的數據,n<=500

對於40%的數據,n<=2000

對於100%的數據,n<=50000,m<=200000。

本題考查組合計數方法,算兩次。本題的關鍵是計算∠的個數。一個角由一個頂點和兩條邊組成。

用A1,A2,A3分別表示兩邊為紅綠,紅藍和綠藍的∠的個數。

用B1,B2,B3分別表示兩邊都是紅,綠和藍的∠的個數。

用S表示異色三角形的個數。

用T表示三邊同色三角形的個數。

用L表示其它三角形的個數,即只有兩種顏色的三角形的個數。

用算兩次的方法,我們可以得到,

3S+2L=A1+A2+A3

L+3T=B1+B2+B3

這樣一來,總得分為

3S-6T=A1+A2+A3-2B1-2B2-2B3

註意到所有Ai和Bi都可以簡單地通過算出每個節點連出的不同顏色的邊的條數算出。

這樣一來就可以在線性時間完成計算。

【代碼不給】

一道公式題——數三角形