本文主要是介绍PTA【L3】喊山 (30 分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
纪念自己第一次自己写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;
}
这篇关于PTA【L3】喊山 (30 分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!