Pagini recente » Diferente pentru olimpici intre reviziile 95 si 96 | Istoria paginii runda/bravo_1/clasament | Istoria paginii runda/ursus_polar_de_munte/clasament | Probleme de Taietura | Cod sursa (job #1122912)
#include <cstdio>
#include <vector>
using namespace std;
struct vecini
{
vector <int> v;
};
vecini g[2009];
int c[20],a[2009][2009],d[2009][2009];
int main()
{
int n,m,i,j,k,nr,x,y,z;
freopen("ubuntzei.in","r",stdin);
freopen("ubuntzei.out","w",stdout);
scanf("%d%d",&n,&m);
scanf("%d",&nr);
for(i=1;i<=nr;i++)
scanf("%d",&c[i]);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
a[x][y]=z;
a[y][x]=z;
}
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(a[i][k]!=0&&a[j][k]!=0)
if(a[i][k]+a[k][j]<a[i][j]||a[i][j]==0)
{
a[i][j]=a[i][k]+a[k][j];
a[j][i]=a[i][k]+a[k][j];
}
}
printf("%d",a[1][n]);
return 0;
}