{"id":117,"date":"2010-02-21T00:56:00","date_gmt":"2010-02-20T16:56:00","guid":{"rendered":"http:\/\/localhost\/?p=117"},"modified":"2010-02-21T00:56:00","modified_gmt":"2010-02-20T16:56:00","slug":"spfa_in_java","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=117","title":{"rendered":"SPFA in Java"},"content":{"rendered":"<p> \u4e00\u65f6\u5174\u8d77\u5199\u4e86\u4e86\u4e2aJava\u91cc\u7684SPFA\u7b97\u6cd5\u3002\u3002<br \/><img decoding=\"async\" src=\"http:\/\/wjmzbmr.com\/wp-content\/uploads\/pic\/other_site\/img_baidu_j_0012.gif\" \/>\u3002\u3002C++0MSAC\u7684\u9898\u76ee\u6211\u7528Java\u89812000MS<img decoding=\"async\" src=\"http:\/\/wjmzbmr.com\/wp-content\/uploads\/pic\/other_site\/img_baidu_j_0012.gif\" \/><br \/>\u4e0d\u8fc7\u6211\u6ee5\u7528\u4e86Java\u7684\u7279\u6027\u3002\u3002\u7c7b\u90fd\u5f00\u6cdb\u6ee5\u4e86\u3002\u3002\u4e00\u4e2aSPFA\u5f00\u4e86\u4e94\u4e2a\u7c7b<img decoding=\"async\" src=\"http:\/\/wjmzbmr.com\/wp-content\/uploads\/pic\/other_site\/img_baidu_j_0007.gif\" \/><br \/>\u9898\u76ee\u662fPKU 2387<img decoding=\"async\" src=\"http:\/\/wjmzbmr.com\/wp-content\/uploads\/pic\/other_site\/img_baidu_j_0003.gif\" \/><\/p>\n<p><em>import java.util.*;<br \/>class Edge<br \/>{<br \/>    int t,c;<br \/>    Edge(int _t,int _c)<br \/>    {t=_t;c=_c;}<br \/>}<br \/>class Graph<br \/>{<br \/>    int n;<br \/>    List&lt; List&lt;Edge&gt; &gt; E;<br \/>    Graph(int _n)<br \/>    {<br \/>        n=_n;<br \/>        E=new ArrayList&lt; List&lt;Edge&gt; &gt;(n);<br \/>        for(int i=0;i&lt;n;i++) E.add(new ArrayList&lt;Edge&gt;());<br \/>    }<br \/>    void addEdge(int s,int t,int c)<br \/>    {<br \/>        E.get(s).add(new Edge(t,c));<br \/>        E.get(t).add(new Edge(s,c));<br \/>    }<br \/>    Iterator&lt;Edge&gt; adj(int v)<br \/>    {return E.get(v).iterator();}<br \/>}<br \/>class MyQueue extends ArrayDeque&lt;Integer&gt;<br \/>{<br \/>    int n;boolean[] inQ;<br \/>    MyQueue(int _n)<br \/>    {<br \/>        n=_n;<br \/>        inQ=new boolean[n];<br \/>    }<br \/>    void put(int x)<br \/>    {<br \/>        if(!inQ[x])<br \/>        {<br \/>            super.add(x);<br \/>            inQ[x]=true;<br \/>        }<br \/>    }<br \/>    int get()<br \/>    {<br \/>        int t=super.poll();<br \/>        inQ[t]=false;<br \/>        return t;<br \/>    }<br \/>}<br \/>class Spfa<br \/>{<br \/>    final int inf=1&lt;&lt;29;<br \/>    Graph G;<br \/>    int[] dist;<br \/>    MyQueue Q;<br \/>    Spfa(Graph _G,int vs)<br \/>    {<br \/>        G=_G;<br \/>        dist=new int[G.n];Arrays.fill(dist,inf);Q=new MyQueue(G.n);<br \/>        dist[vs]=0;Q.put(vs);<br \/>        while(!Q.isEmpty())<br \/>        {<br \/>            int t=Q.get();int cost=dist[t];<br \/>            Iterator&lt;Edge&gt; i=G.adj(t);<br \/>            while(i.hasNext())<br \/>            {<br \/>                Edge e=i.next();<br \/>                int ncost=cost+e.c;<br \/>                if(ncost&lt;dist[e.t])<br \/>                {<br \/>                    dist[e.t]=ncost;<br \/>                    Q.put(e.t);<br \/>                }<br \/>            }<br \/>        }<br \/>    }<br \/>    int distTo(int v)<br \/>    {<br \/>        return dist[v];<br \/>    }<br \/>}<br \/>public class Main<br \/>{<br \/>    static Scanner in=new Scanner(System.in);<br \/>    static public void main(String[] args)<br \/>    {<br \/>        int m=in.nextInt(),n=in.nextInt();<br \/>        Graph G=new Graph(n);int s,t,c;<br \/>        for(int i=0;i&lt;m;i++)<br \/>        {<br \/>            s=in.nextInt();<br \/>            t=in.nextInt();<br \/>            c=in.nextInt();<br \/>            G.addEdge(s-1,t-1,c);<br \/>        }<br \/>        Spfa solve=new Spfa(G,0);<br \/>        System.out.println(solve.distTo(n-1));<br \/>    }<br \/>}<\/em><br \/>\u672c\u9ad8\u4eae\u4ee3\u7801\u4f7f\u7528codeHl\u751f\u6210\uff0c <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u65f6\u5174\u8d77\u5199\u4e86\u4e86\u4e2aJava\u91cc\u7684SPFA\u7b97\u6cd5\u3002\u3002\u3002\u3002C++0MSAC\u7684\u9898\u76ee\u6211\u7528Java\u89812000MS\u4e0d\u8fc7\u6211\u6ee5\u7528\u4e86Java\u7684\u7279\u6027\u3002\u3002\u7c7b\u90fd\u5f00\u6cdb\u6ee5\u4e86\u3002\u3002\u4e00\u4e2aSPFA\u5f00\u4e86\u4e94\u4e2a\u7c7b\u9898\u76ee\u662fPKU 2387 import java.util.*;class Edge{ int t,c; Edge(int _t,int _c) {t=_t;c=_c;}}class Graph{ int n; List&lt; List&lt;Edge&gt; &gt; E; Graph(int _n) { n=_n; E=new ArrayList&lt; List&lt;Edge&gt; &gt;(n); for(int i=0;i&lt;n;i++) E.add(new ArrayList&lt;Edge&gt;()); } void addEdge(int s,int t,int c) { E.get(s).add(new Edge(t,c)); E.get(t).add(new Edge(s,c)); } Iterator&lt;Edge&gt; adj(int v) {return E.get(v).iterator();}}class MyQueue extends ArrayDeque&lt;Integer&gt;{ int n;boolean[] inQ; MyQueue(int _n) [&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\/117"}],"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=117"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/117\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}