簡單的模板應用,就是求圖中各個點中,每個點到其餘各點最大距離的最小值。#include #include #include using namespace std;
#define maxn 110
#define maxint 999999
int ans[maxn];//the longest distance of every point
int dist[maxn];//the distance between the v and the other point
int n;
int dijsktra(int v)
dist[v]=0;
s[v]=true;
for(i=2;i<=n;i++)
return max;
}int main()
}for(i=1;i<=n;i++)
min=maxint;
for(i=1;i<=n;i++)
if(ans[i]#include using namespace std;
const int max_vertex=128;
const int max_edge_weight=100000000;
int nv;//the number of vertex
int gam[max_vertex][max_vertex];//the map of the problem
int spd[max_vertex];//the distance between source point and the destination point
int asd[max_vertex];//whether the point is explored
int ansperson,anstime;
int main()
}ansperson=-1;anstime=max_edge_weight;
for(k=1;k<=nv;k++)
for(i=1;i<=nv-2;i++)
}if(m!=k)
asd[m]=1;
else
break;
for(j=1;j<=nv;j++)
}int time=0;
for(i=1;i<=nv;i++)
if(i!=k&&timetime)
}if(anstime!=max_edge_weight)
cout<
POJ 1125 裸最短路 Floyd
題意 第一行輸入乙個數n,表示有n個節點,之後的n行,第i 1行第乙個數表示i節點的子節點個數,接著i對數,每對數a,b表示i到a有一條長度為b的邊。輸入直到n 0結束。讓你選擇乙個點,目的是讓這個點散播訊息,使得這個點能以最快的速度把訊息散播到其他所有點。輸出格式為這個點以及散播時間。注意 有可能...
poj 1125 求起點的最短路
題意 有n個人每個人可以把謠言傳給一些人,傳給每個人有一定的時間,求出你把謠言傳給誰,讓所有的人都知道的時間最短。思路 列舉每個點為起點,到所有點的距離的最大值就是該點為起點所消耗的時間,求出最小值就可以了,因為給的n較小,直接 floyd就可以了。include includeconst int ...
最短路模板
1.dijkstra演算法 演算法思想 從某乙個點開始,找與它距離最近的乙個點,然後更新所有點到這條路徑的距離,然後再次選取乙個距離上乙個點路徑最短的點,將其加入路徑,以此進行,直到求出起點到所有點的最短距離.注意 權值不能為負,如圖 1到3的距離應該是零,但這裡結果為一 1 鄰接矩陣 複雜度 o ...