最短路問題

2021-06-07 23:06:49 字數 1024 閱讀 4427

簡單的最短路問題;

#includeconst int maxnum=1002;

const int maxint=100005;

void dijkstra(int n,int v,int *dist,int c[maxnum][maxnum])

dist[v]=0;

s[v]=1;

// 依次將未放入s集合的結點中,取dist最小值的結點,放入結合s中

// 一旦s包含了所有v中頂點,dist就記錄了從源點到所有其他頂點之間的最短路徑長度

for(int i=2;i<=n;++i)

}for(int i=1;i<=n;++i)

dist[i]=maxint;

dijkstra(n,q,dist,c);

int min=99999;

for(int j=1;j<=n;j++)

if(min>dist[army[j]])

min=dist[army[j]];

printf("%d\n",min);

}return 0;

}

用佇列優化但是未用鄰接表:

#include#include#includeusing namespace std;

#define inf 0x7fffffff //inf表示無窮大

int n,edge[1002][1002],distd[1002],i,j;

int army[1002],m,p,q;

typedef pairele;//stl中。

void init()

}void dijstra(int v)

priority_queue,greater> d;

d.push(make_pair(distd[v],v));

while(!d.empty())

int main()

dijstra(q);

}return 0;

}

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路問題

time limit 5000ms memory limit 65536kb total submit 16 accepted 3 page view 402submit status discuss description 現在有n個城市,編號從1到n。現在已知從城市i到城市j需要走的時間為aij...

最短路問題

1.給定帶權圖g 其中每條邊 vi,vj 上的權w vi,vj 是乙個非負實數。計算從任給的乙個源點s到其他各節點的最短路徑 1.把所有結點分成兩組 第一組u包括已確定最短路徑的結點 第二組v u包括尚未確定最短路徑的結點 2.按最短路徑長度遞增的順序逐個把第二組的結點加到第一組中 直至從s出發可達...