```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,v,e;
int c[2005],d[2005];
double k[2005],dp[2005][2005],f[2005][2005][2];
int main()
{
cin>>n>>m>>v>>e;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) f[i][j][0]=f[i][j][1]=9000000;
for(int i=1;i<=v;i++) for(int j=1;j<=v;j++) dp[i][j]=9000000;
for(int i=0;i<=v;i++) dp[i][i]=dp[i][0]=dp[0][i]=0;
for(int i=1;i<=n;i++) cin>>c[i];
for(int i=1;i<=n;i++) cin>>d[i];
for(int i=1;i<=n;i++) cin>>k[i];
for(int i=1;i<=e;i++)
{
int a,b;
double c;
cin>>a>>b>>c;
dp[a][b]=min(c,dp[a][b]);
dp[b][a]=min(c,dp[b][a]);
}
for(int kk=1;kk<=v;kk++)
for(int i=1;i<=v;i++)
for(int j=1;j<=v;j++)
dp[i][j]=min(dp[i][j]*1ll,1ll*dp[i][kk]+1ll*dp[kk][j]);
f[1][0][0]=f[1][1][1]=0;
for(int i=2;i<=n;i++)
{
f[i][0][0]=f[i-1][0][0]+dp[c[i-1]][c[i]];
for(int j=1;j<=min(i,m);j++)
{
f[i][j][0]=min(f[i-1][j][0]+
dp[c[i-1]][c[i]],
f[i-1][j][1]+
dp[d[i-1]][c[i]]*k[i-1]+
dp[c[i-1]][c[i]]*(1-k[i-1]));
f[i][j][1]=min(f[i-1][j-1][0]+
dp[c[i-1]][d[i]]*k[i]+
dp[c[i-1]][c[i]]*(1-k[i]),
f[i-1][j-1][1]+
dp[d[i-1]][d[i]]*(k[i-1]*k[i])+
dp[d[i-1]][c[i]]*(k[i-1]*(1-k[i]))+
dp[c[i-1]][d[i]]*((1-k[i-1])*k[i])+
dp[c[i-1]][c[i]]*((1-k[i-1])*(1-k[i])));
}
}
// for(int i=1;i<=n;i++)
// for(int j=0;j<=min(i,m);j++)
// cout<<f[i][j][0]<<" "<<f[i][j][1]<<'\n';
double ans=f[n][0][0];
for(int i=1;i<=m;i++) ans=min(ans,min(f[n][i][1],f[n][i][0]));
printf("%.2lf",ans);
return 0;
}
```
by YT0104 @ 2022-10-19 20:06:59
C,问题找到了qwq
by YT0104 @ 2022-10-20 21:36:54
```cpp
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) f[i][j][0]=f[i][j][1]=9000000;
```
'1' —> '0'
\n
样例不过(32分)-->100分
qwq
by YT0104 @ 2022-10-20 21:43:22