源點到所有頂點的最短路徑

2021-08-19 14:29:28 字數 1450 閱讀 3543

//源點到其餘各點的最短路徑

//從源點出發 遍歷鄰接點 每次選擇最小的路徑 作為次長

#include

#include

#include

using

namespace

std;

#define maxsize 256

struct basenode

int tailindex;

int nweight;

basenode * next;

};struct graphnode

char info;

basenode * first;

};class graph

public:

bool init();

void findmin(int nstart);

public:

graphnode m_node[maxsize];

int m_vertsize;

int m_edgesize;

};bool graph::init()

cout

<< "輸入邊數"

<< endl;

cin >> m_edgesize;

for (int i = 1; i <= m_edgesize; i++)

else

t->next = new basenode;

t->next->tailindex = ntail;

t->next->nweight = nweight;}}

return

true;

}struct minpath

int index;

int nlength;

string path;

bool

operator==(int a)

};void graph::findmin(int nstart)

}//從源點開始

vector

selectpoint,hasselected;

selectpoint.push_back(nstart);

while (selectpoint.size() > 0)

else

//遍歷鄰接點 替換最小 路徑

while (t)

}t = t->next;

}int m = -1, n = -1;

//從未選過的點中 選擇路徑最短的點

for (int i = 0; i < allpath.size(); i++)}}

if (n != -1)

selectpoint.push_back(n);

}for (int i = 0; i < allpath.size(); i++)

}int main()

return

0;}

單源點最短路徑

include include include using namespace std 自定義比較大小,負數均視為無窮大,其他大小正常 xbool lessthen float x,float y 長度為len的s陣列是否包含e 包含e,return true bool contain int s,...

單源點最短路徑

單源點最短路徑 雨竹清風 單源最短路徑 是從某乙個源點s出發到圖中的所有的頂點之間的最短路徑。1.單源點最短路徑的變體 1 單終點最短路徑問題 找到從每乙個頂點到終點的最短路徑。可以將圖中的邊全部反向,然後求單源點最短路徑即可。2 單對頂點最短路徑問題 對於圖中的兩個頂點u和v,找到從u到v的最短路...

多源點最短路徑

給出s個起點,給出t個終點,求出所有起點到終點的最短路中的最短的乙個.構建乙個超級源點,與每乙個起點相連,權值為0 構建乙個超級終點,與每乙個終點相連,權值為0。然後求超級源點到超級終點的最短路徑。include includeusing namespace std int first 1010 d...