Pagini recente » Monitorul de evaluare | Cod sursa (job #1761743) | Cod sursa (job #102933) | Cod sursa (job #1812979) | Cod sursa (job #314849)
Cod sursa(job #314849)
#include<stdio.h>
#include<stdlib.h>
int n,m;
struct nod{ unsigned short val;
short dist;
struct nod* urm;
}*d[50001],*u[50001],*pc;
struct ant{ int val; struct ant* anter;}*ult;
int viz[50001],nc,dis[50001],vizitate,max=(1<<16)-1;
int main(void)
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
int i,len=sizeof(struct nod*);
for(i=1; i<=50000; i++){d[i]=u[i]=malloc(len);d[i]->urm=NULL; dis[i]=max;}
for(i=1; i<=m; i++)
{ int x,y,z; scanf("%d %d %d",&x,&y,&z);
pc=malloc(len);
if(viz[x]==0){pc->val=y; pc->urm=NULL; pc->dist=z;
d[x]->urm=pc; u[x]=pc; viz[x]=1;}
else{ pc->val=y; pc->urm=NULL; pc->dist=z;
u[x]->urm=pc; u[x]=pc;}
}
for(i=1; i<=50001; i++)viz[i]=0;
nc=1;
vizitate=1;
viz[1]=1;
/*while(vizitate<n){ pc=malloc(len);
pc=d[nc]->urm;
while(pc!=NULL){if(pc->dist<dis[pc->val] && viz[pc->val]==0)dis[pc->val]=pc->dist;
pc=pc->urm;
}
int min=1001,nod2;
pc=d[nc]->urm;
while(pc!=NULL){ if(pc->dist<min && viz[pc->val]==0){min=pc->dist; nod2=pc->val;}
pc=pc->urm;
}
nc=nod2; viz[nc]=1; vizitate++;
}
*/
pc=d[5]->urm;
if(!pc)
printf("%d",10);
return 0;
}