Floyd Warshall একটা গ্রাফের প্রতিটা নোড থেকে প্রতিটা নোডের দূরত্ব বের করে। খুব সহজ। এখনি নেটে সার্চ দাও। একবার দেখলেই পেরে যাবে। :)
#define MAX 100
#define INF (1<<30) // 2^30
int dis[MAX][MAX]; // distance
void floyd_warshall()
{
for(int i=0;i<MAX;i++)
{
for(int j=0;j<MAX;j++)
{
if(i==j) dis[i][j] = 0; // distance from a node to itself is 0
else dis[i][j] = INF; // initially distance from node i to j is INF
}
}
/*
here construct the graph with distance
If a connection exists between node 2 and 5 with distance 8, update
dis[2][5] = 8;
dis[5][2] = 8;
*/
// **************** Floyd Warshall *******************
for(int k=0;k<MAX;k++)
{
for(int i=0;i<MAX;i++)
{
for(int j=0;j<MAX;j++)
{
dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]);
}
}
}
return ;
}
Problem
UVA - 821, 341, 534, 10048, 544

No comments:
Post a Comment