标签:ios mat [] scanf lse ack bre queue cst
因为有重边,不能用优化的
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <iomanip> using namespace std; int map[1010][1010],n,m,d[1010],vis[1010]; int main(int argc, char *argv[]) { scanf("%d%d",&m,&n); memset(vis,0,sizeof(vis)); memset(d,0x3f3f3f3f,sizeof(d)); for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) { if(i==j) map[i][j]=0; else map[i][j]=1e9; } } for(int i=0;i<m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); if(map[x][y]>z) map[x][y]=map[y][x]=z; } d[1]=0; while(1) { int v=-1; for(int i=1;i<=n;i++) { if(!vis[i]&&(v==-1||d[i]<d[v])) v=i; } if(v==-1) break; vis[v]=1; for(int i=1;i<=n;i++) { d[i]=min(d[i],d[v]+map[v][i]); } } printf("%d\n",d[n]); return 0; }
标签:ios mat [] scanf lse ack bre queue cst
原文地址:https://www.cnblogs.com/huluxin/p/9795333.html