資源簡介
68wih4.rar

代碼片段和文件信息
#include??
#include?
#include?
#include?
#include?
?
using?namespace?std;
?
#define?MAX_NODE?26?//?最大結點數
#define?COST_NO_link????INT_MAX?//?定義結點之間沒有連接的花銷為INT_MAX嗎
?
int?Graph[MAX_NODE][MAX_NODE];
int?Cost[MAX_NODE][MAX_NODE];
int?V_dingdianshu?E_bianshu?Start_Point;?//?頂點數和邊數,以及開始的起點(以0開始)
?
int?Odd_Grouping[MAX_NODE];?//?為0表示不為奇,為1表示為奇,從2開始表示配對分組情況,如同為2的兩個為一組,同為3的兩個為一組,……
int?Bak_Odd_Grouping[MAX_NODE];?//?最好情況下分組策略的備份,因為可能還有其他情況更好,如果有,就更新此備份。
int?SHORTEST_PATH_WEIGHT(COST_NO_link);?//?如果存在奇度數點,這里是記錄的添加最短路徑的最小值,是所有點兩兩分組的最短路徑之和的最小值。此值對應Bak_Odd_Grouping所描述的分組情況。
?
int?Dist[MAX_NODE];?//?Dijstra算法中,求從v0到v1最短路徑結果,里面包含v0到最短路徑上各點的最短權值
int?ShortCache[MAX_NODE][MAX_NODE];?//?Dijstra算法中,求點v0到v1的最短路徑記錄值,當第一次求時,把結果存到本數組中,下次如果還在相同調用,則直接返回本數組中相應值。
?//?數據輸入,會用到Graph和Cost
void?Input()
{
????int?i?j;
????int?m?n;
????char?cs?cm?cn;
????int?w;
????cout<“輸入圖的頂點數:“;
????cin>>?V_dingdianshu;
????cout<<“輸入圖邊的數目:“;
????cin>>E_bianshu;
????cout<<“輸入起點:“;
????cin>>cs;
????Start_Point?=?cs?-?‘a‘;
????for(i?=?0;?i?????{
????????for(j?=?0;?j?????????{
????????????Graph[i][j]?=?0;
????????????ShortCache[i][j]?=?0;
????????????Cost[i][j]?=?COST_NO_link;
????????}
????????Cost[i][i]?=?0;?//?置自己到自己為0
????}
??cout?<“輸入“?<????for(i?=?0;?i?????{
????????cin?>>?cm?>>?cn?>>?w;
????????m?=?cm?-?‘a‘;
????????n?=?cn?-?‘a‘;
????????Graph[m][n]?+=?1;
????????Graph[n][m]?+=?1;
????????Cost[m][n]?=?w;
????????Cost[n][m]?=?w;
????}
}
int?Dijstra(int?v0?int?v1?bool?useCache)
{
????if(useCache?&&?ShortCache[v0][v1]?!=?0)?//?之前計算過了,直接返回值
????{
????????return?ShortCache[v0][v1];
????}
????int?i?s?w?min?minIndex;
????bool?Final[MAX_NODE];
????for?(s?=?0;?s?????{
????????Final[s]?=?false;
????????Dist[s]?=?COST_NO_link;?//?初始最大距離
????}
????Final[v0]?=?true;//?首先選v0到v0的距離一定最短,最終數據?
????Dist[v0]?=?0;
????s?=?v0;?//?0?預先選中v0點
???for?(i?=?0;?i?????{
??????for(w?=?0;?w?????????{
????????????if(!Final[w]?//?w點未選中
????????????????&&?Cost[s][w]?nk?//?更新點應該與選中點s相連
????????????????&&?Dist[w]?>?Dist[s]?+?Cost[s][w])?//?通過點s會有更短的路徑
????????????{
????????????????if(Dist[s]?+?Cost[s][w]?<=?0)
????????????????{
????????????????????cout?<“求最短路徑數據溢出。“?<????????????????????exit(-1);
????????????????}
????????????????Dist[w]?=?Dist[s]?+?Cost[s][w];
????????????}
????????}
?if(s?==?v1)//?1.5?如果在中間過程找到了目標點v1,則不再繼續計算了
????????{
????????????ShortCache[v0][v1]?=?Dist[s];
????????????ShortCache[v1][v0]?=?Dist[s];
????????????return?Dist[s];
????????}
????????min?=?COST_NO_link;//?2?選中相應點
????????for(w?=?0;?w?????????{
????????????if(!Final[w]?//?未選中
????????????????&&?Dist[w]????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????342813??2014-07-03?15:06??中國郵路\Debug\main.obj
?????文件??????82944??2014-08-03?16:30??中國郵路\Debug\vc60.idb
?????文件?????143360??2014-07-03?15:06??中國郵路\Debug\vc60.pdb
?????文件?????577605??2014-07-03?15:06??中國郵路\Debug\中國郵路.exe
?????文件?????813704??2014-07-03?15:06??中國郵路\Debug\中國郵路.ilk
?????文件????2713496??2014-07-03?14:48??中國郵路\Debug\中國郵路.pch
?????文件????1139712??2014-07-03?15:06??中國郵路\Debug\中國郵路.pdb
?????文件??????11515??2014-07-03?15:06??中國郵路\main.cpp
?????文件???????4304??2014-07-03?15:47??中國郵路\中國郵路.dsp
?????文件????????541??2014-07-03?14:47??中國郵路\中國郵路.dsw
?????文件??????41984??2014-08-03?16:30??中國郵路\中國郵路.ncb
?????文件??????48640??2014-08-03?16:30??中國郵路\中國郵路.opt
?????文件????????250??2014-08-03?16:29??中國郵路\中國郵路.plg
?????目錄??????????0??2014-07-03?15:06??中國郵路\Debug
?????目錄??????????0??2014-08-03?16:30??中國郵路
-----------?---------??----------?-----??----
??????????????5920868????????????????????15
- 上一篇:讓Xcode支持iOS11.4 Beta設備真機測試
- 下一篇:員工檔案管理系統
評論
共有 條評論