Pagini recente » Cod sursa (job #925950) | Cod sursa (job #2738733) | Cod sursa (job #1635408) | Cod sursa (job #1148339) | Cod sursa (job #362477)
Cod sursa(job #362477)
#include<stdio.h>
int a[255][255],n,val;
struct nod
{
int x,y,val;
nod*leg;
}*prim,*p,*q;;
void adauga(int i,int j);
int main()
{
prim=new nod;q=new nod;
prim->leg=NULL;
q=prim;
FILE*f=fopen("muzeu.in","r");
int i,j,cont;
char var;
fscanf(f,"%d",&n);
for(i=0;i<=n+1;++i)
for(j=0;j<=n+1;++j)
{if(i==0||j==0||i==n+1||j==n+1){a[i][j]=-2;continue;}
fscanf(f,"%c",&var);
if(var=='\n'){j--;continue;}
switch(var)
{
case 'P':{
a[i][j]=0;
p=new nod;
p->x=i;
p->y=j;
p->val=0;
p->leg=NULL;
q->leg=p;
q=p;
break;
}
case '#':{a[i][j]=-2;break;}
case '.':{a[i][j]=30000;break;}
}
}
fclose(f);
while(prim->leg)
{
p=prim->leg;
i=p->x;
j=p->y;
val=p->val+1;
prim->leg=p->leg;
delete p;
if(prim->leg==NULL)q=prim;
cont=0;
while(cont<4)
{
switch(cont)
{
case 0:{adauga(i-1,j);break;}
case 1:{adauga(i+1,j);break;}
case 2:{adauga(i,j-1);break;}
case 3:{adauga(i,j+1);break;}
}
cont++;
}
}
FILE*g=fopen("muzeu.out","w");
for(i=1;i<n+1;++i)
{for(j=1;j<n+1;++j)
if(a[i][j]==30000)fprintf(g,"%d ",-1);
else fprintf(g,"%d ",a[i][j]);
fprintf(g,"\n");
}
fclose(g);
return 0;
}
void adauga(int i,int j)
{
if(a[i][j]>val)
{
p=new nod;
p->leg=NULL;
p->x=i;
p->y=j;
p->val=val;
a[i][j]=val;
q->leg=p;
q=p;
}
}