#include<bits/stdc++.h>
using namespace std;
const int maxn=110;
int n,k,m,s,t;
int c[maxn],pc[maxn][maxn];
int u,v,d;
int a[maxn][maxn];
int main()
{
cin>>n>>k>>m>>s>>t;
for(int i=1;i<=n;i++)
cin>>c[i];
for(int i=1;i<=k;i++)
for(int j=1;j<=k;j++)
cin>>pc[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=99999999;//邻接矩阵建图(初始化)
for(int i=1;i<=m;i++)
{
cin>>u>>v>>d;
if(c[u]!=c[v]&&pc[c[v]][c[u]]==0) a[u][v]=min(a[u][v],d);
if(c[u]!=c[v]&&pc[c[u]][c[v]]==0) a[v][u]=min(a[v][u],d);
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
if(a[s][t]=99999999) a[s][t]=-1;
cout<<a[s][t]<<endl;
return 0;
}
一直输出-1