{"id":1982,"date":"2022-07-05T16:58:47","date_gmt":"2022-07-05T08:58:47","guid":{"rendered":"https:\/\/www.shuizilong.com\/house\/?p=1982"},"modified":"2022-07-05T18:56:38","modified_gmt":"2022-07-05T10:56:38","slug":"bzoj-3118-orz-the-mst","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/house\/archives\/bzoj-3118-orz-the-mst\/","title":{"rendered":"BZOJ 3118. Orz the MST"},"content":{"rendered":"<ul>\n<li><a href=\"https:\/\/darkbzoj.cc\/problem\/3118\">https:\/\/darkbzoj.cc\/problem\/3118<\/a><\/li>\n<li><a href=\"https:\/\/blog.bill.moe\/bzoj3118-MST\/\">https:\/\/blog.bill.moe\/bzoj3118-MST\/<\/a><\/li>\n<\/ul>\n<p>\u5c0f\u5fc3\u91cd\u8fb9\u3002<\/p>\n<pre class=\"brush: cpp; light: false; title: ; toolbar: true; notranslate\" title=\"\">\r\n\r\nconst int N = 300 + 9, M = int(1e3) + 9;\r\n\r\nstruct Tree {\r\n    VI adj&#x5B;N]; int fa&#x5B;N], dep&#x5B;N];\r\n\r\n    void dfs(int u = 1, int p = -1) {\r\n        for (auto v: adj&#x5B;u]) if (v != p) {\r\n            fa&#x5B;v] = u; dep&#x5B;v] = dep&#x5B;u] + 1;\r\n            dfs(v, u);\r\n        }\r\n    }\r\n} T;\r\n\r\nstruct Graph {\r\n    int id&#x5B;N]&#x5B;N];\r\n\r\n    struct edge {\r\n        int x, y, w, inT, c;\r\n        void in(int i) {\r\n            int a, b; RD(x, y, w, inT, a, b);\r\n            c = inT ? b : a;\r\n        }\r\n    } E&#x5B;M];\r\n\r\n    int n, m;\r\n\r\n    void in() {\r\n        RD(n, m); REP_1(i, m) {\r\n            E&#x5B;i].in(i);\r\n            if (E&#x5B;i].inT) {\r\n                int x = E&#x5B;i].x, y = E&#x5B;i].y;\r\n                T.adj&#x5B;x].PB(y); T.adj&#x5B;y].PB(x);\r\n                id&#x5B;x]&#x5B;y] = id&#x5B;y]&#x5B;x] = i;\r\n            }\r\n        }\r\n        T.dfs();\r\n    }\r\n} G;\r\n\r\n\r\nstruct Simplex {\r\n    const static int N = ::M, M = int(1e4) + 9;\r\n    DB a&#x5B;N+1]&#x5B;M+1];\r\n    int n, m;\r\n\r\n    void pivot(int in, int out) {\r\n        REP(i, m+1) if(i!=in) a&#x5B;out]&#x5B;i] \/= -a&#x5B;out]&#x5B;in]; \/\/\u91cd\u7f6eout\u7ea6\u675f\r\n        a&#x5B;out]&#x5B;in] = 1\/a&#x5B;out]&#x5B;in];\r\n\r\n        REP(i, n+1) if (i!=out &amp;&amp; sgn(a&#x5B;i]&#x5B;in])) { \/\/\u91cd\u65b0\u8ba1\u7b97\u5176\u4ed6\u7ea6\u675f\r\n            DB t = a&#x5B;i]&#x5B;in]; a&#x5B;i]&#x5B;in] = 0;\r\n            REP(j, m+1) a&#x5B;i]&#x5B;j] += t*a&#x5B;out]&#x5B;j];\r\n        }\r\n    }\r\n\r\n    DB run() {\r\n        while (true) {\r\n            int in=0, out=0; DB Min=OO;\r\n            REP_1(i, m) if(sgn(a&#x5B;0]&#x5B;i])&gt;0) {\r\n                in=i;\r\n                break;\r\n            }\r\n            if(!in)return a&#x5B;0]&#x5B;0];\r\n            REP_1(i, n) if(sgn(a&#x5B;i]&#x5B;in])&lt;0&amp;&amp;a&#x5B;i]&#x5B;0]\/-a&#x5B;i]&#x5B;in]&lt;Min) {\r\n                Min=a&#x5B;i]&#x5B;0]\/-a&#x5B;i]&#x5B;in];\r\n                out=i;\r\n            }\r\n            if(!out)throw; \/\/unbounded\r\n            pivot(in, out);\r\n        }\r\n    }\r\n\r\n    int gao() {\r\n\r\n        \/\/ z b\r\n        \/\/ c A\r\n\r\n        G.in();\r\n        n = G.m; m = 0; REP_1(i, n) {\r\n            a&#x5B;i]&#x5B;0] = G.E&#x5B;i].c;\r\n            int u = G.E&#x5B;i].x, v = G.E&#x5B;i].y;\r\n            if (T.dep&#x5B;u] &lt; T.dep&#x5B;v]) swap(u, v);\r\n            if (!G.E&#x5B;i].inT) { \/\/ E&#x5B;i] is not a tree edge\r\n                while (u != v) {\r\n                    int p = T.fa&#x5B;u];\r\n                    int j = G.id&#x5B;p]&#x5B;u]; \/\/ E&#x5B;j] is a tree edge\r\n                    if (G.E&#x5B;i].w &lt; G.E&#x5B;j].w) {\r\n                        ++m; a&#x5B;i]&#x5B;m] = a&#x5B;j]&#x5B;m] = -1;\r\n                        a&#x5B;0]&#x5B;m] = G.E&#x5B;j].w - G.E&#x5B;i].w;\r\n                    }\r\n                    u = p; if (T.dep&#x5B;u] &lt; T.dep&#x5B;v]) swap(u, v);\r\n                }\r\n            }\r\n        }\r\n\r\n        return run();\r\n    }\r\n} fst;\r\n\r\n\r\nint main() {\r\n\r\n#ifndef ONLINE_JUDGE\r\n    freopen(&quot;in.txt&quot;, &quot;r&quot;, stdin);\r\n    \/\/freopen(&quot;out.txt&quot;, &quot;w&quot;, stdout);\r\n#endif\r\n    OT(fst.gao());\r\n}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/darkbzoj.cc\/problem\/3118 https:\/\/blog.bill.moe\/bzoj3118-MST\/ \u5c0f\u5fc3\u91cd\u8fb9\u3002 const int N = 300 + 9, M = int(1e3) + 9; struct Tree { VI adj&#x5B;N]; int fa&#x5B;N], dep&#x5B;N]; void dfs(int u = 1, int p = -1) { for (auto v: adj&#x5B;u]) if (v != p) { fa&#x5B;v] = u; dep&#x5B;v] = dep&#x5B;u] + 1; dfs(v, u); } } } [&hellip;]<\/p>\n","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":[1],"tags":[],"class_list":["post-1982","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2tdP7-vY","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1982","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=1982"}],"version-history":[{"count":1,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1982\/revisions"}],"predecessor-version":[{"id":1984,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1982\/revisions\/1984"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/media?parent=1982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/categories?post=1982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/tags?post=1982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}