#include<fstream.h>
ifstream f("date.in");
ofstream g("date.out");
int a[100][100],n,m,min=-16000,k[100];
void citire()
{int c,x,y,i;
f>>n>>m;
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) a[i][j]=0;
else a[i][j]=min;
for(i=1;i<=n;i++) f>>k[i];
for(i=1;i<=m;i++)
{f>>x>>y>>c;
a[x][y]=k[x]+c;
}
}
void rf()
{for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]<a[i][k]+a[k][j] && a[i][k]!=min && a[k][j]!=min)
a[i][j]=a[i][k]+a[k][j];
}
void main()
{citire();
rf();
g<<a[1][n]<<endl;
}
|