Untitled
unknown
plain_text
3 years ago
1.7 kB
5
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...