題意﹕給了一個點邊的圖,每點賦一個數值,每條邊給了,分別代表了。現在只給了每條邊上的,問是否能找到滿足這些邊上的數值的條件。若存在解則輸出任意一組答案。保証。
比賽寫了一些錯的東西,因為最初以為正確的做法會很慢………
首先,在每一個連通子圖任意選一點,然後任選一條連接的邊,先求因式分解。而也必然是。因此有取值,而且。因此選定後這連通子圖的其他點的值則可以經DFS用求得。
注意DFS時須要檢查取值是否正確的﹕若在一點為一未經過的點賦值,則必需檢查。若已賦值則需檢查且。
整個算法時間複雜度是。
另,注意檢查時小心溢出,即,需要用到64位整數。
沒有留言:
張貼留言