Pagini recente » Cod sursa (job #2753232) | Cod sursa (job #2745056) | Cod sursa (job #1060743) | Cod sursa (job #1551752) | Cod sursa (job #887598)
Cod sursa(job #887598)
#include<stdio.h>
int a[2001][2001],s[2001];
int main()
{
int v[16],n,m,i,j,pp,pp2,nr,min,d[2001],x,y,c,t,poz,k;
freopen("ubuntzei.in","r",stdin);
freopen("ubuntzei.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=k;i++)
scanf("%d",&v[i]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(i!=j)
a[i][j]=100001;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&c);
a[x][y]=c;
}
for(i=1;i<=n;i++)
d[i]=a[1][i];
for(i=1;i<n;i++)
{
min=100001;
for(j=1;j<=n;j++)
if(d[j]<min&&s[j]==0)
{
min=d[j];
poz=j;
}
s[poz]=1;
for(j=1;j<=n;j++)
if(d[j]>d[poz]+a[poz][j])
{
pp=0;
pp2=0;
for(t=1;t<=k&&pp==0;t++)
{
if(j==v[t])
pp=1;
if(poz==v[t])
pp2=1;
}
if(pp==0||pp2==1)
d[j]=d[poz]+a[poz][j];
}
}
nr=1;
for(i=1;i<=n;i++)
if(d[i]!=0&&d[i]!=100001)
nr++;
printf("%d",nr);
return 0;
}