﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-唯思有杰-文章分类-图论与网络流</title><link>http://www.cppblog.com/chinshiketsu/category/14458.html</link><description>Jeffrey's area</description><language>zh-cn</language><lastBuildDate>Wed, 18 Aug 2010 10:08:38 GMT</lastBuildDate><pubDate>Wed, 18 Aug 2010 10:08:38 GMT</pubDate><ttl>60</ttl><item><title>链表SPFA【RQN341】</title><link>http://www.cppblog.com/chinshiketsu/articles/122326.html</link><dc:creator>陈斯杰</dc:creator><author>陈斯杰</author><pubDate>Thu, 05 Aug 2010 08:43:00 GMT</pubDate><guid>http://www.cppblog.com/chinshiketsu/articles/122326.html</guid><wfw:comment>http://www.cppblog.com/chinshiketsu/comments/122326.html</wfw:comment><comments>http://www.cppblog.com/chinshiketsu/articles/122326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chinshiketsu/comments/commentRss/122326.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chinshiketsu/services/trackbacks/122326.html</trackback:ping><description><![CDATA[<p>type point=^rec;<br>&nbsp;&nbsp;&nbsp;&nbsp; rec=record<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next:point;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endv:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w:longint;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br>var head,adj:array[1..20000]of point;<br>&nbsp;&nbsp;&nbsp; p,null:point;<br>&nbsp;&nbsp;&nbsp; n:integer;e:longint;start,over:integer;<br>&nbsp;&nbsp;&nbsp; open,closed:longint;<br>&nbsp;&nbsp;&nbsp; q:array[0..1000000]of integer;<br>&nbsp;&nbsp;&nbsp; flag:array[1..20000]of boolean;<br>&nbsp;&nbsp;&nbsp; dist:array[1..20000]of longint;</p>
<p>procedure init;<br>var i,stv,edv:integer;<br>&nbsp;&nbsp;&nbsp; wei:longint;<br>begin<br>fillchar(q,sizeof(q),0);<br>fillchar(flag,sizeof(flag),false);<br>fillchar(dist,sizeof(dist),127);<br>readln(n,e);<br>for i:=1 to n do<br>&nbsp; begin<br>&nbsp; new(p);<br>&nbsp; head[i]:=p;<br>&nbsp; adj[i]:=p;<br>&nbsp; end;<br>for i:=1 to e do<br>&nbsp; begin<br>&nbsp; readln(stv,edv,wei);<br>&nbsp; adj[stv]^.endv:=edv;<br>&nbsp; adj[stv]^.w:=wei;<br>&nbsp; new(p);<br>&nbsp; adj[stv]^.next:=p;<br>&nbsp; adj[stv]:=p;<br>&nbsp; /////symmetry/////<br>&nbsp; adj[edv]^.endv:=stv;<br>&nbsp; adj[edv]^.w:=wei;<br>&nbsp; new(p);<br>&nbsp; adj[edv]^.next:=p;<br>&nbsp; adj[edv]:=p<br>&nbsp; end;<br>for i:=1 to n do<br>&nbsp; adj[i]^.next:=null;<br>start:=1;over:=n;<br>end;</p>
<p>procedure spfa(s:longint);<br>var dady:integer;<br>begin<br>flag[s]:=true;q[1]:=s;dist[s]:=0;<br>open:=1;closed:=1;<br>while open&lt;=closed do<br>&nbsp; begin<br>&nbsp; dady:=q[open];<br>&nbsp; p:=head[dady];<br>&nbsp; while (p&lt;&gt;nil) do<br>&nbsp;&nbsp;&nbsp;&nbsp; begin<br>&nbsp;&nbsp;&nbsp;&nbsp; if dist[p^.endv] &gt; dist[dady]+p^.w<br>&nbsp;&nbsp;&nbsp;&nbsp; then begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dist[p^.endv] := dist[dady]+p^.w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not flag[p^.endv]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(closed);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; q[closed]:=p^.endv;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag[p^.endv]:=true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br>&nbsp;&nbsp;&nbsp;&nbsp; p:=p^.next;<br>&nbsp;&nbsp;&nbsp;&nbsp; end;</p>
<p>&nbsp; flag[dady]:=false;<br>&nbsp; inc(open);<br>&nbsp; end;<br>end;</p>
<p><br>begin<br>init;<br>null:=nil;<br>spfa(start);<br>writeln(dist[over]);<br>readln;readln;<br>end.&nbsp;&nbsp; </p>
<img src ="http://www.cppblog.com/chinshiketsu/aggbug/122326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chinshiketsu/" target="_blank">陈斯杰</a> 2010-08-05 16:43 <a href="http://www.cppblog.com/chinshiketsu/articles/122326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>