[ create a new paste ] login | about

Link: http://codepad.org/uwDbAVV6    [ raw code | output | fork ]

hoaithu.melody - C++, pasted on Jul 2:
// Grid Acid

#include <iostream>
#include <conio.h>
using namespace std;

#define FOR(i, a, b) for(int i = a; i <= b; i++)
#define maxN 3001

int N, M;
int rs, cs, rStart, cStart;
int a[maxN][maxN];
bool visit[maxN][maxN];
int qr[maxN*maxN], qc[maxN*maxN];
int front, rear;
int ans1, ans2;
int dirr[] = {-1, 0, 1, 0};
int dirc[] = {0, 1, 0, -1};

void BFS(int rStart, int cStart)
{
	int k, count = 0;
	front = rear = 0;
	qr[rear] = rStart; qc[rear] = cStart; rear++;
	while(front != rear)
	{
		int r, c, nr, nc;
		r= qr[front]; c = qc[front]; front++;
		for(int k = 0; k < 4; k++)
		{
			nr = r + dirr[k];
			nc = c + dirc[k];
			if(nr > 0 && nr <= N && nc > 0 && nc <= M)
			{
				if(a[nr][nc] == -2)
				{
					a[nr][nc] = a[r][c] + 1;
					qr[rear] = nr; qc[rear] = nc; rear++;
				}
				if(a[nr][nc] == -1)
				{
					count++;
					if(count == 4)
						a[nr][nc] = a[r][c];
				}
			}
		}
	}
}

int findMax()
{
	int i,j;
	int temp = 0;
	FOR(i, 1, N)
		FOR(j, 1, M)
		{
			if(a[i][j] == -2)
				return -1;
			if(a[i][j] >= temp)
				temp = a[i][j];
		}
	return temp;
}

int main()
{
	freopen("input.txt", "r", stdin);
	int T;
	cin >> T;
	FOR(tc, 1, T)
	{
		cin >> N >> M;
		cin >> rStart >> cStart;
		FOR(i, 1, N)
		{
			FOR(j, 1, M)
			{
				cin >> a[i][j];
				if(a[i][j] == 1)
					a[i][j] = -2;
				if(a[i][j] == 2)
				{
					rs = i; cs = j;
					a[i][j] = -1;
				}
			}
		}

		a[rStart][cStart] = 1;
		BFS(rStart,cStart);
		ans1 = a[rs][cs];
		if(ans1 == -1)
			ans2 = -1;
		else ans2 = findMax();
		cout << "Case #" << tc << endl;
		cout << ans1 << " " << ans2 << endl;
	}
	getch();
	return 0;
}


Output:
1
2
3
4
Line 18: error: conio.h: No such file or directory
In function 'int main()':
Line 99: error: 'getch' was not declared in this scope
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: