您好,欢迎来到锐游网。
搜索
您的当前位置:首页Dijkstra algorithm

Dijkstra algorithm

来源:锐游网

 

implemented with a two-dimensional array

int e[10][10];
int dis[10], book[10];
int inf = 99999999;
int n, m;

int main(){
	cin >> n >> m; // n:vertex  m:edge
	
	//initialize
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= n; j++)
			if(i == j) e[i][j] = 0;
			else e[i][j] = inf;
	
	//read in edge
	int t1, t2, t3;
	for(int i = 1; i <= m; i++){
		cin >> t1 >> t2 >> t3;
		e[t1][t2] = t3;
	}	
	
	//initialize dis array
	for(int i = 1; i <= n; i++)
		dis[i] = e[1][i];
		
	//initialize book array
	for(int i = 1; i <= n; i++)
		book[i] = 0;
	book[1] = 1;
	
	//core code
	for(int i = 1; i <= n-1; i++){
		int min = inf;
		int v, u;
		//find the nearest vertex to vertex 1
		for(int j = 1; j <= n; j++)
			if(book[j] == 0 && dis[j] < min){
				min = dis[j];
				u = j;
			} 
		book[u] = 1;
		for(v = 1; v <= n; v++)
			if(e[u][v] < inf)
				if(dis[v] > dis[u] + e[u][v])
					dis[v] = dis[u] + e[u][v];
	}

	//output
	for(int i = 1; i <= n; i++)
		cout << dis[i] << " ";
		
	return 0;
}

 

 

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务