Pagini recente » Cod sursa (job #3216693) | Cod sursa (job #3285123) | Cod sursa (job #519782) | Cod sursa (job #76788) | Cod sursa (job #1268294)
#include <fstream>
using namespace std;
FILE *f=fopen("ubuntzei.in","r");
FILE *g=fopen("ubuntzei.out","w");
int n,m,x[3020],y[3020],k[3020],dis[3020];
struct lis{lis *dr;int val,cost;};
lis *p[3020],*u[3020];
int main()
{
int i,j,ok,sum,a,b,kk,c;
fscanf(f,"%d%d%d",&n,&m,&kk);
for(i=1;i<=kk;++i)
fscanf(f,"%d",&k[i]);
lis *nou,*aux;
for(i=1;i<=m;++i)
{
fscanf(f,"%d%d%d",&a,&b,&c);
aux=new lis;
aux->val=b;
aux->dr=0;
aux->cost=c;
if(!p[a])
{
p[a]=u[a]=aux;
}
else
{
u[a]->dr=aux;
u[a]=aux;
}
aux=new lis;
aux->val=a;
aux->dr=0;
aux->cost=c;
if(!p[b])
{
p[b]=u[b]=aux;
}
else
{
u[b]->dr=aux;
u[b]=aux;
}
}
int inc,sf,co[3000];
inc=sf=1;
co[1]=1;
dis[1]=1;
aux=p[1];
while(inc<=sf)
{
aux=p[co[inc]];
while(aux)
{
if((dis[aux->val]>dis[co[inc]]+aux->cost)||(!dis[aux->val]))
{
dis[aux->val]=dis[co[inc]]+aux->cost;
++sf;
co[sf]=aux->val;
}
aux=aux->dr;
}
++inc;
}
fprintf(g,"%d",dis[n]-1);
return 0;
}