1 条题解
-
0
C++ :
#include<iostream> using namespace std; int s[2501]; int f[2501][2501]; bool F[2501]; int n,m; int a,b; int x,y,c,k; int maxint=0x7fffffff,minl; void init(); void work(); int main() { init(); work(); return 0; } void init() { cin>>n>>m>>a>>b; for(int i=1;i<=n;++i) { for(int j=1;j<=n;++j) { f[i][j]=maxint; } s[i]=maxint; F[i]=true; } for(int i=1;i<=m;++i) { cin>>x>>y>>c; f[x][y]=f[y][x]=c; } return; } void work() { for(int i=1;i<=n;++i) { s[i]=f[a][i]; } s[a]=0; F[a]=false; for(int i=1;i<n;++i) { minl=maxint; k=0; for(int j=1;j<=n;++j) { if(F[j]&&s[j]<minl) { minl=s[j]; k=j; } } if(!k) { break; } F[k]=false; for(int j=1;j<=n;++j) { if(s[k]+f[k][j]<s[j]&&s[k]!=maxint&&f[k][j]!=maxint) { s[j]=s[k]+f[k][j]; } } } cout<<s[b]; return; }
- 1
信息
- ID
- 1453
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者