// Online C++ compiler to run C++ program online
#include<iostream>
#include<vector>
#include<stdlib.h>
#include<algorithm>
#include<iomanip>
#include<string.h>
#include<exception>
#include<map>
#include<cmath>
#include<unordered_map>
#include<set>
#include<climits>
#include<ctype.h>
#include<queue>
using namespace std;
int main() {
// 输入
int N, T;
cin >> N >> T;
// 节点之间一定是互联互通的,不要单向传播不到
int u, v;
map<int, set<int>> map; //记录边到边的关系
for (int i = 0; i < T; ++i) {
cin >> u >> v;
map[u].insert(v);
map[v].insert(u);
}
int start;
cin >> start;
queue<int> queue;
set<int> visited;
int layer = 0; // 记录几层能够遍历完成
queue.push(start);
visited.insert(start);
while (visited.size() < N)
{
int len = queue.size();
for (int i=0; i < len; ++i)
{
int cur = queue.front();
queue.pop();
for (auto val : map[cur])
{
if (0 == visited.count(val))
{
queue.push(val);
visited.insert(val);
}
}
}
++layer;
}
std::cout << layer * 2 << "\n";
return 0;
}
华为OD机试-最长广播效应
最新推荐文章于 2024-11-13 23:07:01 发布