标签:大于 max int images else 序号 nbsp add ace
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int map[1000][1000]; 6 int vis[1000]; 7 int dis[1000]; 8 int path[1000]; 9 int n,m,w; 10 int e; 11 const int maxn=999999; 12 void df(int); 13 void print(int, int); 14 int main() 15 { 16 cin>>n>>m; 17 memset(dis,maxn,sizeof(dis)); 18 memset(map,maxn,sizeof(map)); 19 for(int i=1;i<=m;i++) 20 { 21 int x,y; 22 cin>>x>>y>>w; 23 map[x][y]=map[y][x]=w; 24 } 25 memset(vis,0,sizeof(vis)); 26 int a; 27 cin>>a>>e; 28 df(a); 29 print(a,e); 30 } 31 void df(int s) 32 { 33 for(int i=1;i<=n;i++) 34 { 35 dis[i]=map[s][i]; 36 if(dis[i]!=maxn) 37 { 38 path[i]=s; 39 } 40 else path[i]=0; 41 } 42 vis[s]=1; 43 dis[s]=0; 44 int k,min1; 45 for(int i=1;i<=n-1;i++) 46 { 47 k=s; 48 min1=maxn; 49 for(int j=1;j<=n;j++) 50 { 51 if(dis[i]<min1&&vis[j]==0) 52 { 53 min1=dis[i]; 54 k=j; 55 } 56 } 57 vis[k]=1; 58 for(int q=1;q<=n;q++) 59 { 60 if(vis[q]==0&&dis[q]>dis[k]+map[k][q]) 61 { 62 dis[q]=dis[k]+map[k][q]; 63 path[q]=k; 64 } 65 } 66 } 67 cout<<dis[e]<<" "; 68 } 69 void print(int u,int r) 70 { 71 int que[1000]; 72 int tot=1; 73 int temp; 74 que[tot]=r; 75 tot++; 76 temp=path[r]; 77 while(temp!=u) 78 { 79 que[tot]=temp; 80 tot++; 81 temp=path[temp]; 82 } 83 que[tot]=u; 84 for(int i=tot;i>=1;i--) 85 { 86 cout<<que[i]<<"-->"; 87 } 88 }
标签:大于 max int images else 序号 nbsp add ace
原文地址:http://www.cnblogs.com/lyqlyq/p/6686067.html