Cod sursa(job #314849)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 13 mai 2009 11:57:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.57 kb
#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;
}