2011年2月24日 星期四

Codeforces #60 C Mushroom Strife

題意﹕給了一個邊的圖,每點賦一個數值,每條邊給了,分別代表了。現在只給了每條邊上的,問是否能找到滿足這些邊上的數值的條件。若存在解則輸出任意一組答案。保証

比賽寫了一些錯的東西,因為最初以為正確的做法會很慢………

首先,在每一個連通子圖任意選一點,然後任選一條連接的邊,先求因式分解。而也必然是。因此取值,而且。因此選定後這連通子圖的其他點的值則可以經DFS用求得。

注意DFS時須要檢查取值是否正確的﹕若在一點為一未經過的點賦值,則必需檢查。若已賦值則需檢查

整個算法時間複雜度是

另,注意檢查時小心溢出,即,需要用到64位整數。

沒有留言: