Cod sursa(job #271302)

Utilizator shnakoVlad Schnakovszki shnako Data 5 martie 2009 08:49:53
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#include <stdlib.h>
FILE *f, *g;
int dl[5]={0, -1, 0, 1,  0};
int dc[5]={0,  0, 1, 0, -1};
int m=0, n, v[100][100], x, y, xx, yy, i, j, u[100][100];
char t;
void back(int l, int c, int pas)
	{
	int i, ci, li;
	for (i=1;i<=4;i++)
		{
		ci=c+dc[i];
		li=l+dl[i];
		if (u[li][ci])
			continue;
		u[li][ci]=pas;
		if ((ci>=1)&&(ci<=m)&&(li>=1)&&(li<=n)&&(!v[li][ci]||v[li][ci]==3))
			if (v[li][ci]==v[xx][yy]&&pas%2==1)
				{
				for (i=1;i<=n;i++)
					for (j=1;j<=m;j++)
						if (u[i][j]==pas/2+1)
							{
							fprintf(g, "%d %d %d", i, j, pas/2);
							fcloseall();
							exit(0);
							}
				}
			else
				back(li, ci, pas+1);
			u[li][ci]=0;
		}
	}

int main(void)
{
f=fopen("rj.in", "r");
g=fopen("rj.out", "w");
fscanf(f, "%d%d", &n, &m);
fscanf(f, "%c", &t);
for (i=1;i<=n;i++)
	{
	if (i==4)
		i=4;
	for (j=1;j<=m;j++)
		{
		fscanf(f, "%c", &t);
		if (t==' ')
			v[i][j]=0;
		if (t=='X')
			v[i][j]=1;
		if (t=='R')
			{
			x=i;
			y=j;
			v[i][j]=2;
			}
		if (t=='J')
			{
			xx=i;
			yy=j;
			v[i][j]=3;
			}
		}
	fscanf(f, "%c", &t);
	}
/*for (i=1;i<=n;i++)
	{
	for (j=1;j<=m;j++)
		fprintf(g, "%d ", v[i][j]);
	fprintf(g, "\n");
	}*/
u[x][y]=1;
back(x, y, 2);
return 0;
}