#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> graph;
vector<int> visited;
queue<int> q;
int bfs (int u, int V) {
int curr = 1;
int next = 0;
int depth = 0;
q.push(u);
while (!q.empty()) {
u = q.front();
q.pop();
curr--;
if (visited[u]) continue;
for (auto v : graph[u]) {
if (visited[v]) continue;
q.push(v);
next++;
}
visited[u] = true;
if (curr <= 0) {
curr = next;
next = 0;
depth++;
}
}
return depth;
}
int bfs2 (int u, int V) {
vector<int> visited(V);
int curr = 1;
int next = 0;
int depth = 0;
q.push(u);
while (!q.empty()) {
u = q.front();
q.pop();
curr--;
if (visited[u]) continue;
for (auto v : graph[u]) {
if (visited[v]) continue;
q.push(v);
next++;
}
visited[u] = true;
if (curr <= 0) {
curr = next;
next = 0;
depth++;
}
}
return u;
}
int main () {
cin.tie(0)->sync_with_stdio(0);
int V, E;
int u, v;
int len = 0;
int id = 0;
cin >> V >> E;
graph.resize(V);
visited.assign(V, false);
for (int i = 0; i < E; i++) {
cin >> u >> v;
u--;
v--;
graph[u].push_back(v);
graph[v].push_back(u);
}
for (int i = 0; i < V; i++) {
if (visited[i]) continue;
len += bfs(bfs2(i, V), V);
}
cout << len;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |