#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #include<time.h> using namespace std; int map[100][100]={0}; int book[100]={0}; int dis[100]={0};//顶点 int n=0,m=0; int minn=99999; int u=0; void Dijk() { for(int i=1;i<=n;i++) { minn=99999; for(int j=1;j<=n;j++) { if(!book[j] && dis[j]<minn) { minn=dis[j]; u=j; } }//找到最小的u book[u]=1; for(int j=1;j<=n;j++)//松弛j点 { if(dis[u]+map[u][j]<dis[j]) { dis[j]=dis[u]+map[u][j];//修改 } } //book[i]=1; } } int main() { //freopen("Dijkstra_out.txt","r",stdin); cin>>n>>m; int a=0,b=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) { map[i][j]=0; } else { map[i][j]=999999; } } }//初始化 for(int i=1;i<=m;i++) { cin>>a>>b; cin>>map[a][b];//读入边 } //初始化 for(int i=1;i<=n;i++) { dis[i]=map[1][i]; }//读入dis数组 // for(int i=1;i<=n;i++) // { // cout<<dis[i]<<" "; // } // Dijk(); for(int i=1;i<=n;i++) { cout<<dis[i]<<" "; } // for(int i=1;i<=n;i++) // { // //for(int j=1;j<=n;j++) // // { // cout<<map[1][i]<<" "; // // } // //cout<<"\n"; // }//输出 //cout<<map[1][5]<<endl; cout<<(double)clock()/CLOCKS_PER_SEC; return 0; }
时间: 2024-09-27 14:48:20