Untitled

 avatar
unknown
plain_text
2 years ago
1.7 kB
3
Indexable
#include <iostream>
using namespace std;

#define MAX_SIZE 10000

int front = -1, rear = -1;

int Ar[MAX_SIZE] = {0};
int cnt[MAX_SIZE] = {0};

class queue{
private:
public:
	void enqueue(int ars, int ra);
	void dequeue();
	void peek(int &ars, int &ra);
	bool isEmpty();
};

void queue :: enqueue(int ars, int ra)
{
	front++;
	Ar[front] = ars;
	cnt[front] = ra;

}

void queue :: dequeue()
{
	if(!isEmpty())
	{
	   rear++;
	}
}

bool queue :: isEmpty()
{
	if(rear == front)
	{
		return true;
	}
	return false;
}

void queue :: peek(int &ars, int &ra)
{
	ars = Ar[rear + 1];
	ra  = cnt[rear + 1];
}

int arr[101][101];

void reset(int ark[101][101])
{
	for(int i = 0; i < 101; i++)
	{
		for(int j = 0; j < 101; j++)
		{
			ark[i][j] = -1;
		}
	}
}

int main()
{
	for(int testcase = 1; testcase <= 10; testcase++)
	{
		int N, K; // do dai cua chuoi va diem bat dau
		cin >> N >> K;
		front = rear = -1;
		reset(arr);
		int ar[101] = {0}; // tao mang danh dau
		for(int i = 0; i < N / 2; i++)
		{
			int x, y;
			cin >> x >> y;
			arr[x][y] = 1;
		}
		int index = 1;
		queue qe;
		qe.enqueue(K, index);
		int id = 0;
		int max = 0;
		while(!qe.isEmpty())
		{
			int temp;
			qe.peek(temp, index);
			qe.dequeue();
			for(int j = 0; j <= 100; j++)
			{
				if(arr[temp][j] == 1 && ar[j] == 0)
				{
					qe.enqueue(j, index + 1);
					ar[j] = index + 1;
				}
			}
			if(id <= index)
			{
				id = index; // tim index max
			}
		}
	  for(int i = 0; i <= 100; i++)
	  {
		  if(ar[i] == id)
		  {
			  if(max < i)
			  {
				  max = i;
			  }
		  }
	  }
		cout<<"#"<<testcase<<" "<<max<<endl;
	}
}
Editor is loading...