spfa和迪傑斯特拉(鄰接表)

2021-09-25 18:20:23 字數 1166 閱讀 3537

這個算spfa模板吧...本來想用來解til the cows come home poj - 2387 ,但是。。有重邊....所以。用鄰接表的話..重邊問題我暫時不知道怎麼解決...只能用鄰接矩陣做了..然後  這個就用作spfa模板吧 

感覺。。。如果用佇列的話,迪傑斯特拉和spfa之間應該就是vis用處不同了....畢竟,spfa可以判斷負回環

#include #include using namespace std;

const int infty = 0x3f3f3f3f;

const int maxm = 4005;

const int maxv = 1005;

typedef structedge;

edge edge[maxm];

int n, m, headlist[maxv];

void spfa()

d[1] = 0;

vis[1] = 0;

q.push(1);

while(!q.empty())

} cout << d[n] << endl;

}void addedge(int a, int b, int c, int i)

int main()

spfa();

} return 0;

}

#include #include using namespace std;

const int infty = 0x3f3f3f3f;

const int maxm = 4005;

const int maxv = 1005;

typedef structedge;

edge edge[maxm];

int n, m, headlist[maxv];

void djs()

d[1] = 0;

vis[1] = 0;

q.push(1);

while(!q.empty())

} cout << d[n] << endl;

}void addedge(int a, int b, int c, int i)

int main()

spfa();

} return 0;

}

迪傑斯特拉演算法(鄰接表求解)

與鄰接矩陣表示的方法不同的是,在更新dis陣列和path陣列時,只需要把求u到j距離的g.edges u j 換成鄰接表表示 g.edges u j 表示u到j的距離,因此可以寫乙個getweight g,u,j 演算法用於計算u到j的距離 獲得邊的權重 建立圖 void creategraph a...

迪傑斯特拉演算法

if object id t test is not null drop table t test gocreate table dbo t test id int identity 1,1 not null primary key,自增字段,無意義 header varchar 500 第一點的名...

迪傑斯特拉演算法

dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法 能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra演算法是很有代表性的最短...