{"id":254,"date":"2006-08-05T20:11:00","date_gmt":"2006-08-05T12:11:00","guid":{"rendered":"http:\/\/114418"},"modified":"2006-08-05T20:11:00","modified_gmt":"2006-08-05T12:11:00","slug":"%e6%9c%80%e4%bc%98%e5%8c%b9%e9%85%8dkuhn_munkras%e7%ae%97%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.yewen.us\/blog\/2006\/08\/%e6%9c%80%e4%bc%98%e5%8c%b9%e9%85%8dkuhn_munkras%e7%ae%97%e6%b3%95\/","title":{"rendered":"\u6700\u4f18\u5339\u914d(Kuhn_Munkras\u7b97\u6cd5)"},"content":{"rendered":"<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\/\/ ** Start of PerfectMatch *******************************\n\/\/ Name: PerfectMatch by Kuhn_Munkras O(n^3)\n\/\/ Description: w is the adjacency matrix, nx,ny are the size of x and y,\n\/\/ lx, ly are the lables of x and y, fx&#x5B;i], fy&#x5B;i] is used for marking\n\/\/ whether the i-th node is visited, matx&#x5B;x] means x match matx&#x5B;x],\n\/\/ maty&#x5B;y] means y match maty&#x5B;y], actually, matx&#x5B;x] is useless,\n\/\/ all the arrays are start at 1\n\nint nx,ny,w&#x5B;MAXN]&#x5B;MAXN],lx&#x5B;MAXN],ly&#x5B;MAXN];\nint fx&#x5B;MAXN],fy&#x5B;MAXN],matx&#x5B;MAXN],maty&#x5B;MAXN];\n\nint path(int u)\n{\n    int v;\n    fx&#x5B;u]=1;\n    for(v=1;v&amp;lt;=ny;v++)\n        if((lx&#x5B;u]+ly&#x5B;v]==w&#x5B;u]&#x5B;v])&amp;amp;&amp;amp;(fy&#x5B;v]&amp;lt;0)) {\n            fy&#x5B;v]=1;\n            if((maty&#x5B;v]&amp;lt;0)||(path(maty&#x5B;v]))) {\n                matx&#x5B;u]=v;\n                maty&#x5B;v]=u;\n                return(1);\n            } \/\/ end of if((maty&#x5B;v]...\n        } \/\/ end of if((lx&#x5B;u]...\n    return(0);\n} \/\/ end of int path()\n\nint PerfectMatch()\n{\n    int ret=0,i,j,k,p;\n\n    memset(ly,0,sizeof(ly));\n    for(i=1;i&amp;lt;=nx;i++) {\n        lx&#x5B;i]=-INF;\n        for(j=1;j&amp;lt;=ny;j++)\n            if(w&#x5B;i]&#x5B;j]&amp;gt;lx&#x5B;i])\n                lx&#x5B;i]=w&#x5B;i]&#x5B;j];\n    } \/\/ end of for(i...\n\n    memset(matx,-1,sizeof(matx));\n    memset(maty,-1,sizeof(maty));\n    for(i=1;i&amp;lt;=nx;i++) {\n        memset(fx,-1,sizeof(fx));\n        memset(fy,-1,sizeof(fy));\n        if(!path(i)) {\n            i--;\n            p=INF;\n            for(k=1;k&amp;lt;=nx;k++)\n                if(fx&#x5B;k]&amp;gt;0)\n                    for(j=1;j&amp;lt;=ny;j++)\n                        if((fy&#x5B;j]&amp;lt;0)&amp;amp;&amp;amp;(lx&#x5B;k]+ly&#x5B;j]-w&#x5B;k]&#x5B;j]&amp;lt;p))\n                            p=lx&#x5B;k]+ly&#x5B;j]-w&#x5B;k]&#x5B;j];\n            for(j=1;j&amp;lt;=ny;j++) ly&#x5B;j]+=(fy&#x5B;j]&amp;lt;0?0:p);\n            for(k=1;k&amp;lt;=nx;k++) lx&#x5B;k]-=(fx&#x5B;k]&amp;lt;0?0:p);\n        } \/\/ end of if(!path(i))\n    } \/\/ end of for(i...\n\n    for(i=1;i&amp;lt;=ny;i++) ret+=w&#x5B;maty&#x5B;i]]&#x5B;i];\n    return ret;\n} \/\/ end of int PerfectMatch()\n\/\/ ** End of PerfectMatch *********************************<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ ** Start of PerfectMatch *************************** [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_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_post_was_ever_published":false},"categories":[7,11],"tags":[95,304,315,435],"class_list":["post-254","post","type-post","status-publish","format-standard","hentry","category-tech-notes","category-contests","tag-km","tag-304","tag-315","tag-435"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4aR5e-46","_links":{"self":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts\/254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/comments?post=254"}],"version-history":[{"count":0,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts\/254\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/media?parent=254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/categories?post=254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/tags?post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}