Untitled
unknown
plain_text
3 years ago
1.1 kB
6
Indexable
#include<iostream>
using namespace std;
int front =-1, rear = -1;
int connect[101][101];
int x,y;
int Qx[100000], Qd[100000];
int index[101] = {0};
void push(int x, int d)
{
rear ++;
Qx[rear] = x;
Qd[rear] = d;
}
void pop(int &x, int &d)
{
front ++;
x = Qx[front];
d = Qd[front];
}
int Bfs(int x, int d)
{
push(x,d);
int id=0, max=0;
while (front !=rear)
{
pop(x,d);
for (int y1=0; y1<100; y1++)
{
if (connect[x][y1] == 1 && index[y1] == 0)
{
push(y1, d+1);
index[y1] = d+1;
}
}
if (id < d)
{
id = d;
}
}
for (int i=0; i<=100; i++)
{
if(index[i] == id)
{
if (max < i) max = i;
}
}
return max;
}
int main()
{
for (int tc=1; tc<=10; tc++)
{
int n, st;
cin >> n >> st;
for (int i=0; i<100; i++) index[i] = 0;
for (int i=0; i<100; i++)
for (int j=0; j<100; j++)
connect[i][j] = -1;
for (int i=0; i<n/2; i++)
{
cin >> x >> y;
connect[x][y] = 1;
}
front = rear = -1;
cout << "#" << tc << " " << Bfs(st,1) << endl;
}
return 0;
}
Editor is loading...