一道公式題——數三角形
數三角形(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都可以簡單地通過算出每個節點連出的不同顏色的邊的條數算出。
這樣一來就可以在線性時間完成計算。
【代碼不給】
一道公式題——數三角形