{"id":115,"date":"2010-02-20T19:17:00","date_gmt":"2010-02-20T11:17:00","guid":{"rendered":"http:\/\/localhost\/?p=115"},"modified":"2010-02-20T19:17:00","modified_gmt":"2010-02-20T11:17:00","slug":"topcoder_srm_462_div_i_1000","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=115","title":{"rendered":"TopCoder SRM 462 Div I 1000"},"content":{"rendered":"<p> \u6bd4\u8d5b\u7684\u65f6\u5019\u6ca1\u6709A\u6389\u3002\u3002\u540e\u6765\u770b\u4e86ikki\u5927\u725b\u7684\u63d0\u793a\u7b97\u662f\u660e\u767d\u4e86\u3002\u3002<br \/>\u7531\u4e8en&lt;=50\u60f3\u600e\u4e48\u5199\u90fd\u884c\u3002\u3002\u53ea\u8981\u522b\u66b4\u529b\u641c\u5c31\u53ef\u4ee5\u4e86\u56e7\u3002\u3002<br \/>\u9996\u5148\u679a\u4e3e\u6bcf\u6761\u8fb9\u3002\u7b97\u51fa\u5220\u6389\u8fd9\u6761\u8fb9\u540e\u4ece\u8fd9\u6761\u8fb9\u7684\u8d77\u70b9\u52302\u7684\u6700\u77ed\u8def\u3002\u3002<br \/>\u4e3a\u4e86\u65b9\u4fbf\u53ef\u4ee5\u628a\u6240\u6709\u8fb9\u7684\u90fd\u53cd\u8fc7\u6765\u3002\u3002\u8fd9\u6837\u5c31\u90fd\u53d8\u62102\u5230\u8fd9\u4e2a\u8d77\u70b9\u7684\u6700\u77ed\u8def\u4e86\u3002\u3002<br \/>\u7136\u540e\u7528spfa\u6765\u66f4\u65b0\u7b54\u6848\u3002\u3002\u5c31\u662f\u8bf4\u5b9a\u4e49dist[i]\u4ecei\u8282\u70b9\u8fd0\u7528\u6700\u4f18\u7b56\u7565\u52302\u7684\u8def\u7a0b\u3002\u3002<br \/>\u90a3\u4e48\u5173\u4e8ej\u8282\u70b9\u65b0\u7684\u4ee3\u4ef7\u5c31\u662f<br \/>\u5220:deletecost of edge(j,i) \/has been calculated before<br \/>\u4e0d\u5584:dist[i]+cost of edge(j,i)<br \/>\u90a3\u4e48\u65b0\u7684\u4ee3\u4ef7\u5c31\u662f\u8fd9\u4e24\u4e2a\u6700\u5927\u503c\u3002\u3002<br \/>\u7136\u540e\u7528\u8fd9\u4e2a\u6765\u66f4\u65b0j\u8282\u70b9\u3002\u3002\u8ddf\u5e73\u5e38\u7684spfa\u4e00\u6837\u5c31\u53ef\u4ee5\u4e86\u3002\u3002<br \/>\u6700\u540edist[0]\u5c31\u662f\u6240\u6c42\u4e86\u3002\u3002<br \/>Code\uff1a<\/p>\n<p><strong>#include<\/strong><strong> &lt;vector&gt;<br \/>#include &lt;list&gt;<br \/>#include &lt;map&gt;<br \/>#include &lt;set&gt;<br \/>#include &lt;deque&gt;<br \/>#include &lt;stack&gt;<br \/>#include &lt;bitset&gt;<br \/>#include &lt;algorithm&gt;<br \/>#include &lt;functional&gt;<br \/>#include &lt;numeric&gt;<br \/>#include &lt;utility&gt;<br \/>#include &lt;sstream&gt;<br \/>#include &lt;iostream&gt;<br \/>#include &lt;iomanip&gt;<br \/>#include &lt;cstdio&gt;<br \/>#include &lt;cmath&gt;<br \/>#include &lt;cstdlib&gt;<br \/>#include &lt;ctime&gt;<br \/>#include &lt;queue&gt;<br \/>#define rep(i,n) for(int i=0;i&lt;n;i++)<br \/>using namespace std;<\/p>\n<p>class WarTransportation {<br \/>public:<br \/>    int messenger(int, vector &lt;string&gt;);<br \/>};<br \/>const int maxn=100,inf=1&lt;&lt;29;int n;<br \/>struct edge<br \/>{<br \/>    int s,t,c,dcost;bool e;<br \/>    edge(int _s,int _t,int _c):s(_s),t(_t),c(_c),e(true){}<br \/>};<br \/>vector&lt;edge&gt; E[maxn];<br \/>typedef vector&lt;edge&gt;::iterator it;<br \/>void add_edge(vector&lt;edge&gt; E[maxn],int s,int t,int c)<br \/>{E[s].push_back(edge(s,t,c));}<br \/>void spfa(vector&lt;edge&gt; E[maxn],it d)<br \/>{<br \/>    d-&gt;e=false;int dist[maxn];rep(i,n) dist[i]=inf;<br \/>    bool inq[maxn]={0};inq[1]=true;dist[1]=0;<br \/>    queue&lt;int&gt; Q;Q.push(1);<br \/>    while(Q.size())<br \/>    {<br \/>        int t=Q.front();Q.pop();inq[t]=false;int cost=dist[t];<br \/>        for(it i=E[t].begin();i!=E[t].end();i++)if(i-&gt;e)<br \/>        {<br \/>            int ncost=cost+i-&gt;c;<br \/>            if(ncost&lt;dist[i-&gt;t])<br \/>            {<br \/>                dist[i-&gt;t]=ncost;<br \/>                if(!inq[i-&gt;t]) Q.push(i-&gt;t),inq[i-&gt;t]=true;<br \/>            }<br \/>        }<br \/>    }<br \/>    d-&gt;dcost=dist[d-&gt;t];d-&gt;e=true;<br \/>}<br \/>int WarTransportation::messenger(int _n, vector &lt;string&gt; h) {<br \/>    n=_n;<br \/>    string A;for(int i=0;i&lt;h.size();i++) A+=h[i];<br \/>    istringstream in(A);int s,t,c;char tmp;<br \/>    do<br \/>    {<br \/>        in&gt;&gt;s&gt;&gt;t&gt;&gt;c;s&#8211;;t&#8211;;<br \/>        add_edge(E,t,s,c);<br \/>    }while(in&gt;&gt;tmp);<br \/>    rep(i,n)<br \/>    {<br \/>        for(it e=E[i].begin();e!=E[i].end();e++)<br \/>            spfa(E,e),cout&lt;&lt;e-&gt;t+1&lt;&lt;&quot;-&gt;&quot;&lt;&lt;e-&gt;s+1&lt;&lt;&quot;:&quot;&lt;&lt;e-&gt;dcost&lt;&lt;endl;<br \/>    }<br \/>    int dist[maxn];rep(i,n) dist[i]=inf;<br \/>    bool inq[maxn]={0};inq[1]=true;dist[1]=0;<br \/>    queue&lt;int&gt; Q;Q.push(1);<br \/>    while(Q.size())<br \/>    {<br \/>        int t=Q.front();Q.pop();inq[t]=false;int cost=dist[t];<br \/>        for(it i=E[t].begin();i!=E[t].end();i++)<br \/>        {<br \/>            int ncost=max(cost+i-&gt;c,i-&gt;dcost);<br \/>            if(ncost&lt;dist[i-&gt;t])<br \/>            {<br \/>                dist[i-&gt;t]=ncost;<br \/>                if(!inq[i-&gt;t]) Q.push(i-&gt;t),inq[i-&gt;t]=true;<br \/>            }<br \/>        }<br \/>    }<br \/>    if(dist[0]==inf) return -1;<br \/>    return dist[0];<br \/>}<\/p>\n<p><\/strong><strong>\/\/Powered by [KawigiEdit] 2.0!<\/strong><br \/>\u672c\u9ad8\u4eae\u4ee3\u7801\u4f7f\u7528codeHl\u751f\u6210\uff0c <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6bd4\u8d5b\u7684\u65f6\u5019\u6ca1\u6709A\u6389\u3002\u3002\u540e\u6765\u770b\u4e86ikki\u5927\u725b\u7684\u63d0\u793a\u7b97\u662f\u660e\u767d\u4e86\u3002\u3002\u7531\u4e8en&lt;=50\u60f3\u600e\u4e48\u5199\u90fd\u884c\u3002\u3002\u53ea\u8981\u522b\u66b4\u529b\u641c\u5c31\u53ef\u4ee5\u4e86\u56e7\u3002\u3002\u9996\u5148\u679a\u4e3e\u6bcf\u6761\u8fb9\u3002\u7b97\u51fa\u5220\u6389\u8fd9\u6761\u8fb9\u540e\u4ece\u8fd9\u6761\u8fb9\u7684\u8d77\u70b9\u52302\u7684\u6700\u77ed\u8def\u3002\u3002\u4e3a\u4e86\u65b9\u4fbf\u53ef\u4ee5\u628a\u6240\u6709\u8fb9\u7684\u90fd\u53cd\u8fc7\u6765\u3002\u3002\u8fd9\u6837\u5c31\u90fd\u53d8\u62102\u5230\u8fd9\u4e2a\u8d77\u70b9\u7684\u6700\u77ed\u8def\u4e86\u3002\u3002\u7136\u540e\u7528spfa\u6765\u66f4\u65b0\u7b54\u6848\u3002\u3002\u5c31\u662f\u8bf4\u5b9a\u4e49dist[i]\u4ecei\u8282\u70b9\u8fd0\u7528\u6700\u4f18\u7b56\u7565\u52302\u7684\u8def\u7a0b\u3002\u3002\u90a3\u4e48\u5173\u4e8ej\u8282\u70b9\u65b0\u7684\u4ee3\u4ef7\u5c31\u662f\u5220:deletecost of edge(j,i) \/has been calculated before\u4e0d\u5584:dist[i]+cost of edge(j,i)\u90a3\u4e48\u65b0\u7684\u4ee3\u4ef7\u5c31\u662f\u8fd9\u4e24\u4e2a\u6700\u5927\u503c\u3002\u3002\u7136\u540e\u7528\u8fd9\u4e2a\u6765\u66f4\u65b0j\u8282\u70b9\u3002\u3002\u8ddf\u5e73\u5e38\u7684spfa\u4e00\u6837\u5c31\u53ef\u4ee5\u4e86\u3002\u3002\u6700\u540edist[0]\u5c31\u662f\u6240\u6c42\u4e86\u3002\u3002Code\uff1a #include &lt;vector&gt;#include &lt;list&gt;#include &lt;map&gt;#include &lt;set&gt;#include &lt;deque&gt;#include &lt;stack&gt;#include &lt;bitset&gt;#include &lt;algorithm&gt;#include &lt;functional&gt;#include &lt;numeric&gt;#include &lt;utility&gt;#include &lt;sstream&gt;#include &lt;iostream&gt;#include &lt;iomanip&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;cstdlib&gt;#include &lt;ctime&gt;#include &lt;queue&gt;#define rep(i,n) for(int i=0;i&lt;n;i++)using namespace std; class WarTransportation {public: int messenger(int, vector &lt;string&gt;);};const int maxn=100,inf=1&lt;&lt;29;int n;struct edge{ int s,t,c,dcost;bool e; edge(int _s,int _t,int _c):s(_s),t(_t),c(_c),e(true){}};vector&lt;edge&gt; E[maxn];typedef vector&lt;edge&gt;::iterator it;void [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/115"}],"collection":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=115"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/115\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}