Cod sursa(job #863442)

Utilizator Kira96Denis Mita Kira96 Data 23 ianuarie 2013 20:11:49
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int dx[]={0,0,-1,0,1};
int dy[]={0,-1,0,1,0};
int mat[151][151],m[151][151],i,j,tot,xi,yi,n,k,key[30000],sol,sol1,M; 
void back(int x,int y)
{
	if(!mat[x][y])
	{
		++sol;
		key[(x-1)*M+y]=1;
	}
	mat[x][y]++;
	for(int e=1;e<=4;++e)
	{
		if((dx[e]+x)&&(dx[e]+x<=n)&&(dy[e]+y)&&(dy[e]+y<=M)&&key[m[x+dx[e]][y+dy[e]]]&&mat[x+dx[e]][y+dy[e]]!=tot)
			back(x+dx[e],y+dy[e]);
	}
}
int main ()
{
	f>>n>>M>>k;
	while(k>M)
	{
		xi++;
		k-=M;
	}
	++xi;
	yi=k;
	for(i=1;i<=n;++i)
		for(j=1;j<=M;++j)
			f>>m[i][j];
	sol1=-1;
	tot=1;
	while(sol!=sol1)
	{
	sol1=sol;
	back(xi,yi);
	++tot;
	}
	g<<sol;
	return 0;
}