<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=Floyd-Warshall</id>
	<title>Floyd-Warshall - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=Floyd-Warshall"/>
	<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=Floyd-Warshall&amp;action=history"/>
	<updated>2026-05-02T18:15:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0-alpha</generator>
	<entry>
		<id>https://wiki.ta.in.th/index.php?title=Floyd-Warshall&amp;diff=91&amp;oldid=prev</id>
		<title>Tata: Created page with &quot;*เป็น Algorithm หา Shortest Path ให้ทุกสองจุดใดๆ (หมายความว่า สามารถบอก Shortest Path จา...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=Floyd-Warshall&amp;diff=91&amp;oldid=prev"/>
		<updated>2019-03-07T17:13:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;*เป็น Algorithm หา Shortest Path ให้ทุกสองจุดใดๆ (หมายความว่า สามารถบอก Shortest Path จา...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;*เป็น Algorithm หา Shortest Path ให้ทุกสองจุดใดๆ (หมายความว่า สามารถบอก Shortest Path จากจุด u ไป v ได้เลย)&lt;br /&gt;
*โดยใช้ Time: O(V^3)&lt;br /&gt;
*เก็บเป็น Adjacency Matrix  ใช้  Space:  O(V^2)&lt;br /&gt;
*เริ่มต้นต้องกำหนดให้ระยะทาง dist[u][v] ทุกๆช่องเป็น INF ก่อน (INF คือเสมือนกับว่าไม่มีทางเดินจาก u-&amp;gt;v)&lt;br /&gt;
 /*&lt;br /&gt;
     &amp;quot; FLOYD-WARSHALL&amp;quot;&lt;br /&gt;
     AUTHOR: ROOS&lt;br /&gt;
     DATE: 23/3/2012&lt;br /&gt;
 */&lt;br /&gt;
 #include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #define N_VERTEX 1000&lt;br /&gt;
 #define INF 1000000000&lt;br /&gt;
 int dist[N_VERTEX+5][N_VERTEX+5], nVertex, nEdge;&lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     int u, v, weight;&lt;br /&gt;
     scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;nVertex,&amp;amp;nEdge);&lt;br /&gt;
     //Initial&lt;br /&gt;
     for(int i=1; i&amp;lt;=nVertex; i++)&lt;br /&gt;
         for(int j=1; j&amp;lt;=nVertex; j++)&lt;br /&gt;
             dist[i][j] = INF;&lt;br /&gt;
     //Input&lt;br /&gt;
     for(int i=1; i&amp;lt;=nEdge; i++)&lt;br /&gt;
     {&lt;br /&gt;
         scanf(&amp;quot;%d%d%d&amp;quot;,&amp;amp;u,&amp;amp;v,&amp;amp;weight);&lt;br /&gt;
         dist[u][v] = weight;           //not any two edge have same (u,v)&lt;br /&gt;
         dist[v][u] = weight;           //not any two edge have same (u,v)&lt;br /&gt;
     }&lt;br /&gt;
     //Floyd-Warshall O(V^3)&lt;br /&gt;
     for(int k=1; k&amp;lt;=nVertex; k++)&lt;br /&gt;
         for(int i=1; i&amp;lt;=nVertex; i++)&lt;br /&gt;
             for(int j=1; j&amp;lt;=nVertex; j++)&lt;br /&gt;
                 if(dist[i][k] + dist[k][j] &amp;lt; dist[i][j])&lt;br /&gt;
                     dist[i][j] = dist[i][k] + dist[k][j];&lt;br /&gt;
     &lt;br /&gt;
     //Show Result&lt;br /&gt;
     printf(&amp;quot;===== Shortest Path =====\n&amp;quot;);&lt;br /&gt;
     for(int i=1; i&amp;lt;=nVertex; i++)&lt;br /&gt;
         for(int j=1; j&amp;lt;=nVertex; j++)&lt;br /&gt;
             printf(&amp;quot;from %d\tto %d\t= %d\n&amp;quot;,i,j,dist[i][j]);&lt;br /&gt;
     scanf(&amp;quot; &amp;quot;);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
 /*&lt;br /&gt;
 5 5&lt;br /&gt;
 1 3 5&lt;br /&gt;
 1 2 3&lt;br /&gt;
 1 5 9&lt;br /&gt;
 2 5 2&lt;br /&gt;
 3 4 1&lt;br /&gt;
 */&lt;/div&gt;</summary>
		<author><name>Tata</name></author>
		
	</entry>
</feed>