纪念自己第一次自己写PTA L3的题一发a了hhh
题目链接L3-008 喊山 (30 分)
直接爆搜BFS就行
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
#define IOS ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m, k;
int dis[N];
bool vis[N];
vector<int> v[N];
int BFS(int x)
{
memset(dis, 0, sizeof dis);
memset(vis, 0, sizeof vis);
queue<int> q;
q.push(x);
vis[x] = 1; ///
while (q.size())
{
int u = q.front();
q.pop();
for (int i = 0; i < v[u].size(); i++)
{
if (!vis[v[u][i]])
{
dis[v[u][i]] = dis[u] + 1;
q.push(v[u][i]);
vis[v[u][i]] = 1;
}
}
}
int res = 0, ans = 0;
for (int i = 1; i <= n; i++)
{
// printf("%d---\n", dis[i]);
if (dis[i] > res)
{
res = dis[i];
ans = i;
}
}
return ans;
}
int main()
{
IOS;
cin >> n >> m >> k;
for (int i = 1; i <= m; i++)
{
int x, y;
cin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
for (int i = 1; i <= k; i++)
{
int x;
cin >> x;
cout << BFS(x) << endl;
}
return 0;
}