{"id":1178,"date":"2015-07-17T07:37:08","date_gmt":"2015-07-16T23:37:08","guid":{"rendered":"http:\/\/www.shuizilong.com\/house\/?p=1178"},"modified":"2015-07-17T07:37:08","modified_gmt":"2015-07-16T23:37:08","slug":"bzoj-1179-apio2009atm","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/house\/archives\/bzoj-1179-apio2009atm\/","title":{"rendered":"BZOJ 1179: [Apio2009]Atm"},"content":{"rendered":"<p><!--more--><br \/>\nhttp:\/\/www.lydsy.com\/JudgeOnline\/problem.php?id=1179<\/p>\n<p>\u5f3a\u8054\u901a\u7f29\u70b9\uff0cDAG DP<\/p>\n<pre class=\"brush: cpp; light: false; title: ; toolbar: true; notranslate\" title=\"\">\r\nconst int N = int(5e5) + 9;\r\nVI _adj&#x5B;N], adj&#x5B;N]; int _bonus&#x5B;N], bonus&#x5B;N];\r\nbool _isBar&#x5B;N], isBar&#x5B;N];\r\nint _n, n;\r\nint _st;\r\n\r\n\r\nint dfn&#x5B;N], low&#x5B;N], bel&#x5B;N], sta&#x5B;N], Time, top; VI con&#x5B;N];\r\n\r\n#define v (*it)\r\nvoid tarjan(int u){\r\n    \r\n    low&#x5B;u] = dfn&#x5B;u] = ++Time;\r\n    sta&#x5B;top++] = u;\r\n    \r\n    ECH(it, _adj&#x5B;u]){\r\n        if (dfn&#x5B;v] &lt; dfn&#x5B;u]){\r\n            if (!dfn&#x5B;v]) tarjan(v);\r\n            checkMin(low&#x5B;u], low&#x5B;v]);\r\n        }\r\n    }\r\n    \r\n    if (low&#x5B;u] == dfn&#x5B;u]){\r\n        int t;\r\n        do{\r\n            t = sta&#x5B;--top];\r\n            con&#x5B;n].PB(t);\r\n            bel&#x5B;t] = n;\r\n            dfn&#x5B;t] = INF;\r\n            bonus&#x5B;n] += _bonus&#x5B;t];\r\n            isBar&#x5B;n] |= _isBar&#x5B;t];\r\n        } while(t != u);\r\n        ++n;\r\n    }\r\n}\r\n\r\n\r\nvoid scc(){\r\n    \r\n    REP_1(u, _n) if(!dfn&#x5B;u]) tarjan(u);\r\n    \r\n    REP_1(u, _n) ECH(it, _adj&#x5B;u]){\r\n        int a = bel&#x5B;u], b = bel&#x5B;v];\r\n        if (a == b) continue;\r\n        adj&#x5B;b].PB(a);\r\n    }\r\n}\r\n\r\nint F&#x5B;N]; int f(int u){\r\n    int &amp;res = F&#x5B;u];\r\n    if (res == -1){\r\n        int t = -INF;\r\n        ECH(it, adj&#x5B;u]) checkMax(t, f(v));\r\n        res = t &gt;= 0 ? t + bonus&#x5B;u] : -INF;\r\n    }\r\n    return res;\r\n}\r\n\r\nint main(){\r\n    \r\n#ifndef ONLINE_JUDGE\r\n    freopen(&quot;\/users\/xiaodao\/desktop\/Exercise\/in.txt&quot;, &quot;r&quot;, stdin);\r\n    \/\/freopen(&quot;\/users\/xiaodao\/desktop\/Exercise\/out.txt&quot;, &quot;w&quot;, stdout);\r\n#endif\r\n    \r\n    RD(_n); Rush{\r\n        int a, b; RD(a, b); --a, --b;\r\n        _adj&#x5B;a].PB(b);\r\n    }\r\n    REP(i, _n) RD(_bonus&#x5B;i]);\r\n    --RD(_st); Rush _isBar&#x5B;RD()-1] = true;\r\n    \r\n    scc();\r\n    \r\n    FLC(F, -1); int st = bel&#x5B;_st]; F&#x5B;st] = bonus&#x5B;st];\r\n    int z = 0; REP(i, n) if (isBar&#x5B;i]) checkMax(z, f(i));\r\n    \r\n    \/*REP(i, n){\r\n        ECH(it, con&#x5B;i]) cout &lt;&lt; v &lt;&lt; &quot; &quot;;\r\n        cout &lt;&lt; bonus&#x5B;i] &lt;&lt; endl;\r\n    }*\/\r\n    \r\n    cout &lt;&lt; z &lt;&lt; endl;\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[22],"tags":[],"class_list":["post-1178","post","type-post","status-publish","format-standard","hentry","category-bzoj"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2tdP7-j0","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/comments?post=1178"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1178\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/media?parent=1178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/categories?post=1178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/tags?post=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}