Nguyen+Duc+Anh.cpp
unknown
c_cpp
2 years ago
1.1 kB
9
Indexable
#include <iostream>
using namespace std;
#define K 1000
int Answer, N, M, H, T;
int E[K][K];
int O[K];
int Q[K+1];
int check[K];
void input()
{
cin >> N >> M >> H;
int x, y;
for(int i = 0; i < N; i++)
{
O[i] = K+1;
check[i] = 0;
for(int j = 0; j < N; j++)
E[i][j] = 0;
}
for(int i = 0; i < M; i++)
{
cin >> x;
O[x] = 0;
}
for(int i = 0; i < H; i++) {
cin >> x >> y;
E[x][y] = 1;
}
}
void bfs(int v)
{
int tail = 0;
Q[tail] = v;
int head = 0;
while(head <= tail)
{
v = Q[head++];
for(int i = 0; i < N; i++)
{
if((E[v][i] == 1 || E[i][v] == 1) && O[v] + 1 < O[i])
{
Q[++tail] = i;
O[i] = O[v] + 1;
}
}
}
}
int main(int argc, char** argv)
{
int test_case;
//freopen("input.txt", "r", stdin);
cin >> T;
for(test_case = 0; test_case < T; test_case++)
{
input();
Answer = 0;
for(int i = 0; i < N; i++)
if(O[i] == 0)
bfs(i);
int max = O[0];
for(int i = 0; i < N; i++)
{
if(O[i] > max)
{
max = O[i];
Answer = i;
}
}
cout << Answer << endl;
}
return 0;
}
Editor is loading...
Leave a Comment