Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- #include <queue>
- #include <vector>
- #include <algorithm>
- #define MAX 1000000
- using namespace std;
- vector<int> grafo[MAX];
- int n, vis[MAX], d_max = -1;
- void bfs(int vert_ini) {
- int d[n];
- memset(d, 0, sizeof d);
- queue<int> fila;
- fila.push(vert_ini);
- d[vert_ini] = 0;
- while(!fila.empty()) {
- int v = fila.front();
- fila.pop();
- vis[v] = 1;
- for(int j = 0; j < n; j++)
- if((find(grafo[v].begin(), grafo[v].end(), j) != grafo[v].end()) && v != j && vis[j] == 0) {
- fila.push(j);
- vis[j] = 1;
- d[j] = d[v] + 1;
- if(d[j] > d_max)
- d_max = d[j];
- }
- }
- }
- int main() {
- memset(vis, 0, sizeof vis);
- cin >> n;
- for(int i = 0; i < n - 1; i++) {
- int a, b;
- cin >> a >> b;
- a--, b--;
- grafo[a].push_back(b);
- grafo[b].push_back(a);
- }
- for(int i = 0; i < n; i++)
- bfs(i);
- cout << d_max << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement