Slow Leak(floyd)
作者:互联网
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=1e18;
const int N=510;
int n,m,t;
ll d;
ll f[N][N];
int p[N];
int main(){
scanf("%d%d%d",&n,&m,&t);
scanf("%lld",&d);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) f[i][j]=0;
else f[i][j]=inf;
for(int i=1;i<=t;i++) scanf("%d",&p[i]);
for(int i=0;i<m;i++){
int a,b;ll c;
scanf("%d%d",&a,&b);scanf("%lld",&c);
f[a][b]=f[b][a]=c;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(f[i][j]>d) f[i][j]=inf;
p[0]=1,p[t+1]=n;
for(int k=0;k<=t+1;k++)
for(int i=0;i<=t+1;i++)
for(int j=0;j<=t+1;j++)
f[p[i]][p[j]]=min(f[p[i]][p[j]],f[p[i]][p[k]]+f[p[k]][p[j]]);
if(f[1][n]==inf) puts("stuck");
else printf("%lld\n",f[1][n]);
return 0;
}
标签:Slow,const,int,Leak,ll,d%,long,floyd,inf 来源: https://blog.csdn.net/qq_44866969/article/details/115054551