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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务