{"id":1981,"date":"2022-07-05T16:43:22","date_gmt":"2022-07-05T08:43:22","guid":{"rendered":"https:\/\/www.shuizilong.com\/house\/?p=1981"},"modified":"2022-07-05T18:05:15","modified_gmt":"2022-07-05T10:05:15","slug":"luogu-p4412-shoi2004%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/house\/archives\/luogu-p4412-shoi2004%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91\/","title":{"rendered":"Luogu P4412. [SHOI2004]\u6700\u5c0f\u751f\u6210\u6811"},"content":{"rendered":"<ul>\n<li><a href=\"https:\/\/www.luogu.com.cn\/problem\/P4412\">https:\/\/www.luogu.com.cn\/problem\/P4412<\/a><\/li>\n<li><a href=\"https:\/\/darkbzoj.cc\/problem\/1937\">https:\/\/darkbzoj.cc\/problem\/1937<\/a><\/li>\n<\/ul>\n<p>\u8fd9\u4e2a\u9898\u4e3b\u8981\u9ebb\u70e6\u7684\u70b9\u8fd8\u662f\u627e\u73af\u3002\u3002\u3002<\/p>\n<pre class=\"brush: cpp; light: false; title: ; toolbar: true; notranslate\" title=\"\">\r\n\r\nconst int N = 50 + 9, M = int(1.5e3) + 9;\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;\r\n        void in() {\r\n            RD(x, y, w);\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();\r\n            id&#x5B;E&#x5B;i].x]&#x5B;E&#x5B;i].y] = id&#x5B;E&#x5B;i].y]&#x5B;E&#x5B;i].x] = i;\r\n        }\r\n    }\r\n} G;\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\r\n    void in() {\r\n        DO(G.n-1) {\r\n            int x, y; RD(x, y);\r\n            adj&#x5B;x].PB(y);\r\n            adj&#x5B;y].PB(x);\r\n        }\r\n        dfs();\r\n    }\r\n} T;\r\n\r\nstruct Simplex {\r\n    const static int N = ::M, M = int(1e3) + 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(); T.in();\r\n        n = G.m; m = 0; REP_1(i, n) {\r\n            a&#x5B;i]&#x5B;0] = 1;\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 (T.fa&#x5B;u] != v) { \/\/ 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:\/\/www.luogu.com.cn\/problem\/P4412 https:\/\/darkbzoj.cc\/problem\/1937 \u8fd9\u4e2a\u9898\u4e3b\u8981\u9ebb\u70e6\u7684\u70b9\u8fd8\u662f\u627e\u73af\u3002\u3002\u3002 const int N = 50 + 9, M = int(1.5e3) + 9; struct Graph { int id&#x5B;N]&#x5B;N]; struct edge { int x, y, w; void in() { RD(x, y, w); } } E&#x5B;M]; int n, m; void in() { RD(n, m); REP_1(i, m) { E&#x5B;i].in(); id&#x5B;E&#x5B;i].x]&#x5B;E&#x5B;i].y] = id&#x5B;E&#x5B;i].y]&#x5B;E&#x5B;i].x] = i; } } [&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-1981","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2tdP7-vX","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1981","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=1981"}],"version-history":[{"count":1,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1981\/revisions"}],"predecessor-version":[{"id":1983,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/1981\/revisions\/1983"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/media?parent=1981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/categories?post=1981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/tags?post=1981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}