Pagini recente » Cod sursa (job #2122476) | Cod sursa (job #330424) | Cod sursa (job #1323596) | Cod sursa (job #1235053) | Cod sursa (job #1120819)
#include <stdio.h>
using namespace std;
int m,n,C[2002][2002],x[2002],nod1,nod2,cost,viz[2002], d[2002], tata[2002];;
void dijkstra(int x0)
{
int i, j, minim, k, ok;
for (i = 1; i<=n; i++)
{
d[i] = C[x0][i];
tata[i] = x0;
viz[i] = 0;
}
tata[x0] = 0;
viz[x0] = 1; ok = 1;
while (ok) {
minim = 3500;
for (i = 1; i<=n; i++)
if (!viz[i] && minim>d[i]) {
minim = d[i];
k = i;
}
if (minim != 3500) {
viz[k] = 1;
for (i = 1; i<=n; i++)
if (!viz[i] && d[i]>d[k]+C[k][i]) {
d[i] = d[k]+C[k][i];
tata[i] = k;
}
}
else ok = 0;
}
printf("%d",d[n]);
}
int main()
{
freopen("ubuntzei.in","r",stdin);
freopen("ubuntzei.out","w",stdout);
scanf("%d %d %d",&n,&m,&x[0]);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
C[i][j]=3500;
}
C[i][i]=0;
}
for(int i=1;i<=x[0];++i)
{
scanf("%d",&x[i]);
}
for(int i=1;i<=m;++i)
{
scanf("%d %d %d",&nod1,&nod2,&cost);
C[nod1][nod2]=cost;
C[nod2][nod1]=cost;
}
/*for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
printf("%d ",C[i][j]);
}
printf("\n");
}
printf("\n");*/
dijkstra(1);
return 0;
}