锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
銆怐ay1銆?br />
meow錛?br />
k=2錛氬厛灝嗚繖N涓猟緇村悜閲忕粍鎴愪竴涓狽*d鐨勭煩闃礎錛屽垯A*AT&e1;i&e3;&e1;j&e3;(mod 2)灝辨槸鍚戦噺i•鍚戦噺j(mod 2)錛屽洜姝ら棶棰樻湁瑙e綋涓斾粎褰揂*AT涓嶆槸鍏?銆?br />
闅忔満1*N鐨勫悜閲弙錛岀湅(v*A)*AT鏄惁絳変簬v*(N*N鐨勫叏1鐭╅樀)錛屽鏋淎*AT涓嶆槸鍏?閭d箞鏈熸湜璇曚袱嬈″氨鍙互寰楀埌涓嶇瓑鐨勭粨鏋溿傦紙濡傛灉璇曚簡10嬈¢兘鏄浉絳夛紝灝辮涓烘棤瑙o級
濡傛灉涓よ竟鐨勪箻縐笉絳夛紝鍒欐壘鍒伴偅涓笉絳夌殑鍒楋紝璁句負絎琲鍒楋紝鍒欏繀鐒跺瓨鍦ㄤ竴涓В鍖呭惈鍚戦噺i錛屾灇涓懼彟涓涓嵆鍙傛椂闂村鏉傚害O(Nd)
k=3錛氳綆?A*AT)&e1;i&e3;&e1;j&e3;2(mod 3)錛屽嵆(Σ(xik*xjk))2錛屽嵆Σ(xik1*xik2*xjk1*xjk2)(mod 3)錛屽姣忎釜鍚戦噺鏋勯犱竴涓猟2緇村悜閲忥紝涓轟箣鍓嶇殑姣忎釜鍚戦噺鍚勭淮涓や袱鐩鎬箻鐨勭粨鏋滐紝鍒欒漿鍖栦負k=2鐨勬儏鍐碉紙鍙笉榪囧皢mod 2鏀逛負mod 3錛夛紝鏃墮棿澶嶆潅搴(Nd2)錛屽父鏁板皬涓鐐癸紙姣斿灝戠畻mod錛夊彲浠ュ崱榪囧幓銆?br />
count錛?br />
錛堟瑙i渶瑕佹煇浜涘緢濂囨殑鎬ц川錛屾湰娌欒尪鐪嬩笉鍑烘潵錛屽彧浼?5鍒嗙殑錛?br />
閫掓帹錛岃F&e1;i&e3;&e1;j&e3;鍜孏&e1;i&e3;&e1;j&e3;琛ㄧず鏌愬眰鏄疊FS搴忓垪鐨?amp;e1;i..j&e3;榪欎竴孌碉紝鏍戠殑鎬婚珮搴﹀拰鏍戠殑媯墊暟錛堟墍姹傚鉤鍧囧煎嵆涓篎&e1;i&e3;&e1;j&e3; / G&e1;i&e3;&e1;j&e3;錛夈?br />
鍒欐灇涓緆錛岃嫢k婊¤凍涓瀹氭潯浠?/span>錛屽垯F&e1;j+1&e3;&e1;k&e3;+=F&e1;i&e3;&e1;j&e3;+G&e1;i&e3;&e1;j&e3;錛孏&e1;j+1&e3;&e1;k&e3;+=G&e1;i&e3;&e1;j&e3;銆?br />
闂鏄繖涓?#8220;涓瀹氭潯浠?#8221;鏄粈涔堬紙鏈闅炬悶鐨勫湴鏂瑰洤錛?br />
絎浂錛孊FS&e1;j+1..k&e3;榪欎竴孌電殑鍚勪釜緇撶偣鍦―FS搴忓垪涓殑浣嶇疆閫掑錛堣繖涓緢鏄劇劧錛夈?br />
絎竴錛孊FS&e1;j+1..k&e3;榪欎竴孌電殑鍚勪釜緇撶偣鍦―FS搴忓垪涓殑浣嶇疆涔嬪墠閮藉繀欏繪湁鍦˙FS&e1;i..j&e3;鑼冨洿鍐呯殑緇撶偣錛屼綔涓哄畠鐨勭埗緇撶偣錛堣繖涓篃寰堟樉鐒訛級錛?br />
絎簩錛孌FS搴忓垪涓紝鎵鏈夊湪BFS&e1;i..j&e3;鑼冨洿鍐呯殑緇撶偣鐨勪笅涓涓綅緗鏋滀笉鏄湪BFS&e1;0..i-1&e3;鑼冨洿鍐呯殑錛屽氨蹇呴』鏄疊FS&e1;j+1..k&e3;鑼冨洿鍐呯殑錛屽洜涓鴻繖琛ㄧず瀹冪殑絎竴涓瓙緇撶偣錛堣繖涓伆甯擱毦鎯沖埌錛侊紒錛侊紒錛侊紒錛侊紒錛侊紒錛侊紒錛侊紒錛佹湰娌欒尪灝辨寕鍦ㄨ繖閲屼簡鍥?#8230;…錛?br />
瀵逛簬絎浂鍜岀涓錛屽疄闄呬笂鏄粰鍑轟簡k鐨勪笂闄愶紝鏋氫婦k鏃朵笉絎﹀悎榪欎釜鏉′歡鍒欓鍑猴紝鑰岀浜屽垯鏄粰鍑轟簡k鐨勪笅闄愶紙鎵鏈夌殑“涓嬩竴涓綅緗?#8221;瑕佸~婊℃墠鑳界畻錛夛紱
姝ゅ錛孎鍜孏瑕佺敤long double錛坉ouble涔熶細鐖嗭紝涓嶇敤鎷呭績綺懼害錛屾湰娌欒尪褰撴椂榪樺湪濡備綍緇存姢騫沖潎鍊肩殑闂涓婄籂緇撲簡寰堜箙……錛?br />
榪欎釜鍋氭硶鏄疧(N3)鐨勶紝浣嗗姞涓婇偅浜涗紭鍖栧氨鍙互85鍒嗕簡鍥?#8230;…
錛堟湰娌欒尪褰撴椂鎯沖埌榪欎釜鍋氭硶浜嗭紝涔熸兂鍒頒簡絎浂鍜岀涓錛屼絾鏈ㄦ湁鎯沖埌絎簩錛岀粨鏋滄寕浜?#8230;…瑕佹槸鐪熷緱鍒?5鍒嗭紝鎬誨垎254錛岀ǔ鐨剅ank1浜?#8230;…鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓э紝鐪熸偛鍓?#8230;…錛?br />
train錛?br />
鍙蹭笂鏈姘寸殑鎻愪氦絳旀……鏁翠釜灝辨槸涓狽OIP鏅強緇勯毦搴︾殑棰?#8230;…
棣栧厛鍒嗘瀽鏁版嵁灝變笉闅懼彂鐜拌繖10涓偣鍏跺疄鏄竴縐嶆ā鍨嬶細
涓寮濮嬫湁鑻ュ共鍏冮挶錛堢敤鍙橀噺v 2琛ㄧず錛夈?br />
鏈夎嫢騫蹭釜澶у潡錛屾瘡涓ぇ鍧楀彲浠ラ夋嫨榪涙垨鑰呬笉榪涳紝濡傛灉榪涳紝灝辮浠樺嚭涓浜涢挶錛屽鏋滀笉榪涳紝灝辮嚜鍔ㄨ煩杞埌鍚庨潰鐨勬煇涓ぇ鍧椼?br />
鍦ㄦ瘡涓ぇ鍧楅噷鏈夎嫢騫蹭釜錛堜笉瓚呰繃25涓級灝忓潡錛屾湁1鎴?0涓彉閲忥紝姣忎釜灝忓潡涔熷彲浠ラ夋嫨瑕佹垨鑰呬笉瑕侊紝濡傛灉瑕侊紝灝卞鎵鏈夌殑鍙橀噺鍚勫姞涓婁竴涓晥鏋滃鹼紙鍙鍙礋錛夈?br />
鐩爣鏄墍鏈夊彉閲忕殑緇濆鍊間箣鍜屾渶澶э紙姣忎釜澶у潡鏈熬浼氱粨綆椾竴嬈★紝鐒跺悗灝嗘墍鏈夊彉閲忕殑鍊兼竻闆訛級
棣栧厛姣忎釜澶у潡鍐呴夊摢浜涘皬鍧楀彲浠ユ毚鍔涙灇涓撅紝鐒跺悗寰楀埌鏈澶х殑鎬葷粷瀵瑰鹼紝璁句負val&e1;i&e3;錛坕涓哄ぇ鍧楃紪鍙鳳級錛岃濡傛灉涓嶈繘絎琲涓ぇ鍧楋紝璺沖埌鐨勫ぇ鍧楃紪鍙蜂負B&e1;i&e3;錛岀i涓ぇ鍧椾粯鍑虹殑閽變負V&e1;i&e3;銆?br />
鑰屽ぇ鍧椾箣闂村氨鏄竴涓被浼間簬01鑳屽寘鐨勬ā鍨嬶紝璁綟&e1;i&e3;&e1;j&e3;琛ㄧず鍒拌揪絎琲涓ぇ鍧楋紙灝氭湭浣滃嚭閫夋嫨錛夋椂錛岀敤鎺変簡j鍏冮挶鐨勬渶澶ф繪晥鏋滃鹼紝鐢‵&e1;i&e3;&e1;j&e3;鏇存柊F&e1;B&e1;i&e3;&e3;&e1;j&e3;錛岃嫢涓嶈秴榪囦竴寮濮嬬殑鎬婚挶鏁板垯鐢‵&e1;i&e3;&e1;j&e3;+val&e1;i&e3;鏇存柊F&e1;i+1&e3;&e1;j+V&e1;i&e3;&e3;錛岃瀹炴椂淇濆瓨鏈浼樺喅絳栥?br />
杈撳嚭鐨勬椂鍊欐敞鎰忎竴涓嬶紝閭i噷闈㈡湁鍑犱釜鐐癸紝褰撻挶涓嶅鏃朵細鑷姩閫夋嫨涓嶈繘褰撳墠澶у潡錛屾湪鏈夊繀瑕佷綔鍑洪夋嫨浜嗐?br />
鑷蟲Day1瀹屾寕銆?br />
銆怐ay2銆?br />
matrix錛?br />
鐭╅樀涔樻硶錛屽崄榪涘埗蹇熷箓銆傛病浜嗐?br />
penman錛?br />
姣旇緝鐚ョ悙鐨凞P棰?#8230;…
閲嶇偣鏄繖涓細鎵鏈夌殑鍥懼艦閮藉彲浠ユ媶鎴愬崟鍒楋紝涓鍒椾竴鍒楀湴寮勶紙鏈矙鑼跺お寮變簡錛岃繖涓兘鏈ㄦ湁鎯寵搗鏉ワ級錛岀劧鍚庡氨鏄笁緇碊P銆?br />
N錛氳F&e1;i&e3;&e1;j&e3;&e1;k&e3;&e1;st&e3;琛ㄧず絎琲鍒楋紝涓婁笅杈圭晫鍒嗗埆涓簀銆乲琛岋紝鐘舵佷負絎瑂t涓儴鍒嗭紙絎?閮ㄥ垎涓烘渶宸﹁竟涓绔栵紝絎?閮ㄥ垎涓轟腑闂磋嫢騫插潡錛岀2閮ㄥ垎涓烘渶鍙寵竟涓绔栵級鐨勬渶浼樿В錛岃綆楀ソ涓鍒椾箣鍚庢眰鍑轟竴澶у爢杈呭姪鍊鹼紝灝卞彲浠ヤ嬌涓嬩竴鍒桹(1)綆楀嚭浜嗐?br />
I錛氳F&e1;i&e3;&e1;j&e3;&e1;k&e3;&e1;st&e3;琛ㄧず絎琲鍒楋紝涓婁笅杈圭晫鍒嗗埆涓簀銆乲琛岋紝鐘舵佷負絎瑂t涓儴鍒嗭紙絎?閮ㄥ垎涓洪偅涓绔栫殑宸﹁竟錛岀1閮ㄥ垎涓洪偅涓绔栵紝絎?閮ㄥ垎涓洪偅涓绔栫殑鍙寵竟錛夌殑鏈浼樿В錛屼笉闇瑕佽緟鍔╁鹼紝鐩存帴姹傚嵆鍙紱
O錛氬彲浠P錛屼絾鏇村ソ鐨勫姙娉曟槸鏋氫婦宸︺佸彸銆佷笂杈圭晫錛岀劧鍚庢壂鎻忥紝璇村畠鏇村ソ鏄洜涓虹煡閬撲簡宸﹀彸杈圭晫錛屽彲浠ョ洿鎺ュ紩鍑哄乏杈圭殑N鍜屽彸杈圭殑I鐨勬渶浼樿В銆?br />
鍏蜂綋瀹炵幇鐨勬椂鍊欑粏鑺傚緢澶?#8230;…鐪熸姌紓ㄤ漢銆傝繕鏈夎娉ㄦ剰涓鴻妭鐪佺┖闂達紝F鏁扮粍瑕佸i榪欎竴緇存粴鍔ㄣ?br />
foodshop錛?br />
棣栧厛榪欐槸涓棤鍚戠幆濂楁爲錛堝叧浜庤繖鏂歸潰鐨勬葷粨瑙?a title=""榪欓噷"" href=""http://www.shnenglu.com/MatoNo1/archive/2012/09/01/189006.html"">榪欓噷錛?br />
鏋氫婦寮搴楃殑閭f潯杈癸紝濡傛灉鏄爲杈癸紝姹傚嚭璇ヨ竟鐨勮緝涓嬬粨鐐瑰線涓嬬殑鏈澶ч暱搴ist1錛屼互鍙婂線鍏跺畠緇撶偣鐨勬渶榪滆窛紱籨ist2錛屽垯緇撴灉鍗充負min{dist1+x, dist2+L-x}錛屾弧瓚?<=x<=L錛孡涓鴻杈歸暱搴︺俤ist1姹傛硶涓嶈浜嗭紝dist2鍒嗕負涓ら儴鍒嗭紝鏍戝唴鐨勶紝鍙互杞寲涓虹粡鍏窪P妯″瀷“鏍戠殑涓績鐐?#8221;錛涙爲澶栫殑錛屽厛姹傚嚭鐜笂鐨勬瘡涓粨鐐瑰線鏍戜腑璧扮殑鏈澶ч暱搴︼紝浣滀負榪欎釜緇撶偣鐨勬潈鍊鹼紝鐒跺悗灝辮漿鍖栦負涓涓甫杈規潈鍜岀偣鏉冪殑鐜紝瀵逛簬姣忎釜鐐筰錛屾眰鍑簃ax{i銆乯璺濈+j鐨勬潈鍊紏錛坖涓虹幆涓婄殑鐐癸級鐨勫鹼紝榪欎釜鍊煎彲浠ラ氳繃鍦ㄧ幆涓婃壂鎻忕殑鏂規硶姹傚嚭錛氳G&e1;i&e3;涓虹i涓偣鍑哄彂錛岄嗘椂閽堣蛋鏇翠紭鐨勪綅緗渶榪滃埌鍝噷銆傞嗘椂閽堟壂鎻忚繖涓幆錛岀劧鍚庢墍鏈夌殑G灝卞彲浠ュ湪綰挎ф椂闂村唴姹傚嚭錛屾眰鍑篏鍚庯紝瀵規瘡涓偣鍒嗗埆姹傚嚭鍏墮嗘椂閽堟洿浼樺尯涓庨『鏃墮拡鏇翠紭鍖哄唴鐨勬渶澶у鹼紙鍙互鍦ㄦ壂鎻忚繃紼嬩腑鐢ㄧ嚎孌墊爲緇存姢錛夛紝鍗沖彲瑙e喅榪欎釜闂銆?br />
濡傛灉寮搴楃殑杈瑰湪鐜笂錛岃鍏朵袱绔偣涓篿銆乯錛坕->j涓洪嗘椂閽堟柟鍚戯級銆傚緢瀹規槗鍙戠幇錛屽鏋滃湪榪欐潯杈逛笂寮搴楋紝鍒檍鐨勯嗘椂閽堟洿浼樺尯鍐呯殑鎵鏈夌偣涓瀹氭槸閫嗘椂閽堝埌榪欎釜搴楁洿榪戯紝i鐨勯『鏃墮拡鏇翠紭鍖哄唴鐨勬墍鏈夌偣涓瀹氭槸欏烘椂閽堝埌榪欎釜搴楁洿榪戯紝鑰屽叾瀹冪殑鐐瑰垯闇瑕侀澶栧垽鏂竴涓嬫槸欏烘椂閽堟洿榪戣繕鏄嗘椂閽堟洿榪戯紙鎬誨垽鏂鏁頒負綰挎э級銆傝繖鏍蜂篃鍙互鍊熷姪綰挎鏍戝湪鎵弿榪囩▼涓眰鍑烘瘡鏉$幆杈圭殑欏恒侀嗘椂閽堟洿浼樺尯錛屼粠鑰岃漿鍖栦負涓庢爲杈圭殑闂涓鏍風殑妯″瀷銆傛椂闂村鏉傚害O(NlogN)銆?br />
涓嶈繃錛屽浜庣幆杈癸紝榪樻湁涓縐嶆洿綆鍗曠殑鍋氭硶錛圤rz @hza錛夛細
浜屽垎鏈榪滆窛紱伙紙鍗崇粨鏋滐級D錛岀劧鍚庡浜庣幆涓婄殑鎵鏈夌偣錛屾壘鍒拌繖涓幆涓婂埌榪欎釜鐐硅窛紱誨ぇ浜庯紙D-榪欎釜鐐規爲閲岀殑鏈澶ф繁搴︼級鐨勭偣闆嗗悎錛堟樉鐒舵槸榪炵畫鐨勪竴孌靛姬錛夛紝瀵規墍鏈夌偣鐨勮繖縐嶅姬姹傚茍錛屽鏋滆兘瑕嗙洊鏁翠釜鐜紝鍒欐渶浼樿В<D錛屽惁鍒欐渶浼樿В>=D銆?br />
鏈矙鑼禗ay2鍏ㄦ毚鍔涳紝鍙嬁浜嗘毚鍔涘垎……瀵逛粯綣佺悙棰樼殑鑳藉姏澶急浜嗭紝浠g爜閲忎竴澶у氨鎮插墽……
錛堝悗鏉ュ彂鐜幫紝foodshop鐨勬毚鍔涢兘鍐欑柕浜嗗洤……鏋氫婦寮搴楃殑杈瑰悗搴旇鐢⊿PFA姹傛渶鐭礬錛屽洜涓哄垹鎺夌殑鍙兘鏄爲杈癸紝鍓╀笅鐨勪笉鏄爲……涓嶈繃鏁版嵁寮憋紝鏈ㄦ湁鍑虹幇榪欑鎯呭喌鍥?#8230;…錛?br />
鑷蟲NOI2013瀹屾寕銆?br />
———————————————————————————————————————————————————
銆愭葷粨 && 涓浜涙劅鎯熾?br />
浠庝笂闈㈠彲浠ョ湅鍑猴紝鏈矙鑼跺湪NOI2013涓嬌鐢ㄧ殑綆楁硶閮芥槸NOIP鏅強緇勪互鍐呴毦搴︾殑鍥э紙matrix鐨勭煩闃典箻娉曞彲鑳界暐楂樼駭涓浜涳紝浣嗘樉鐒朵篃涓嶈兘瓚呰繃NOIP闅懼害錛?#8230;…
榪欎簺綆楁硶閮芥槸鏈矙鑼跺湪2009騫翠互鍓嶅氨鎼炴噦鐨勶紝涔熷氨鏄錛屽悗4騫存帉鎻$殑鎵鏈夌畻娉曪紝榪欐閮芥湪鏈夌敤涓?#8230;…
鏈鍚庝竴嬈OI錛岀珶濡傛瀵屾湁鎴忓墽鎬?#8230;…灞呯劧鍙冩櫘鍙婄粍綆楁硶……
鍥捐銆侀珮綰ф暟鎹粨鏋勩佸瓧絎︿覆銆佸嚑浣曘佹暟璁恒佺粍鍚?#8230;…榪欐閮芥湪鏈夎冿紝榪欎篃鏄疦OI鍘嗗彶涓婄殑涓涓?#8220;鍒涗婦”浜嗗洤……
浣嗗敖綆″姝わ紝鏈矙鑼跺湪姝ゆNOI涓粛鐒舵毚闇插嚭浜嗚澶氶棶棰?#8230;…騫朵笉鏄瘮璧涙妧宸ч棶棰橈紝鑰屾槸騫蟲椂鍩嬩笅鐨勭ジ鏍?#8230;…
鎯抽涓嶅鐏墊椿錛屾壘涓嶅嚭棰樼洰闅愯棌鐨勭壒孌婃ц川錛岀壒孌婃儏鍐佃冭檻涓嶆竻妤氾紝鍐欎唬鐮侀熷害澶參……榪欎簺閮芥槸騫蟲椂涓嶅ソ濂藉仛棰橈紝澶╁ぉ棰撳簾鐨勭粨鏋?#8230;…
鍥犳錛岃繖嬈℃寕鎺夛紝涔熸槸鐞嗘墍搴斿綋鐨勪簨……
涓嶈繃錛屼笉綆¤偪涔堣錛岃繕鏄販榪涗簡闆嗚闃?#8230;…闆嗚闃熸槸涓涓柊鐨勫紑濮嬶紝姣忓ぉ閮介潰涓村法澶х殑鎸戞垬錛屽悓鏃舵瘡澶╅兘鑳藉緱鍒板法澶х殑鎻愰珮……
铏界劧鏈矙鑼剁幇鍦ㄥ緢寮憋紝搴斾粯闅鵑鐨勮兘鍔涜繕榪滆繙涓嶅錛屼絾緇忚繃榪欎竴騫寸殑璁粌錛岀浉淇″彲浠ユ敼鍙樿繖涓鍒囷紝灝藉揩鑴辮彍……
甯屾湜榪欒兘鏄竴涓漿鎶樼偣銆?br />
50錛?2錛?錛?錛?銆?/span>
@榧庣埛
@xudyh
@xyz111
@hzaskywalker(FFT)
@hzhwcmhf
@zhj
@楸間父
@sunzhouyi
浠ュ強浼楀铏愭帀count銆乸enman銆乫oodshop鐨勭鐘?#8230;…
]]>
]]>
鍏舵濇兂鐨勫閥濡欑▼搴︿互鍙婂悇縐嶇粏鑺傜殑澶勭悊闅懼害榪滆秴AHOI2009鐨刢chess錛堜互鍓嶆湰娌欒尪鎬諱互涓鴻繖縐嶆墠鏄渶紲炵殑閫掓帹棰樺洤……錛?br />
鍏蜂綋鐨勯瑙d互鍙婃柟娉曞綊綰充互鍚庡啀鍐欙紝鍏堜笂浠g爜錛?br />
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 27, MAXM = 100010, MOD = 1000000007, INF = ~0U >> 2;
struct edge {
int a, b, pre, next;
} E[(MAXN << 2) + 1];
int n, m, A[MAXN][2];
ll F[MAXN][MAXM], G[MAXN][MAXM], res;
void init_d()
{
re1(i, n) E[i].pre = E[i].next = i; m = n + 1;
}
void add_edge(int a, int b)
{
E[m].a = a; E[m].b = b; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
}
void init()
{
scanf("%d", &n);
char ss0[20], ss1[20];
re1(i, n) {
scanf("%s %s", ss0, ss1);
if (ss0[0] >= 48 && ss0[0] <= 57) A[i][0] = atoi(ss0); else A[i][0] = 96 - ss0[0];
if (ss1[0] >= 48 && ss1[0] <= 57) A[i][1] = atoi(ss1); else A[i][1] = 96 - ss1[0];
}
init_d();
re1(i, n) {
if (A[i][0] < 0) add_edge(-A[i][0], i);
if (A[i][1] < 0) add_edge(-A[i][1], i);
}
}
void solve()
{
int x, y, tmp;
rre1(i, n) re2(j, 1, MAXM) {
F[i][j] = 1;
for (int p=E[i].next; p != i; p=E[p].next) {
x = E[p].b;
if (A[x][0] < 0) {
if (A[x][1] >= j) {
tmp = G[x][A[x][1]] - G[x][j - 1]; if (tmp < 0) tmp += MOD;
F[i][j] = F[i][j] * tmp % MOD;
} else {F[i][j] = 0; break;}
} else {
if (A[x][0] <= j) {
tmp = G[x][j] - G[x][A[x][0] - 1]; if (tmp < 0) tmp += MOD;
F[i][j] = F[i][j] * tmp % MOD;
} else {F[i][j] = 0; break;}
}
}
G[i][j] = (G[i][j - 1] + F[i][j]) % MOD;
}
res = 1;
re1(i, n) if (A[i][0] > 0 && A[i][1] > 0) {
tmp = G[i][A[i][1]] - G[i][A[i][0] - 1]; if (tmp < 0) tmp += MOD;
res = res * tmp % MOD;
}
}
void pri()
{
cout << res << endl;
}
int main()
{
init();
solve();
pri();
return 0;
}
]]>