Advertisement
rdsedmundo

cartog.cpp

May 18th, 2014
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <queue>
  5. #include <vector>
  6. #include <algorithm>
  7.  
  8. #define MAX 1000000
  9.  
  10. using namespace std;
  11.  
  12. vector<int> grafo[MAX];
  13. int n, vis[MAX], d_max = -1;
  14.  
  15. void bfs(int vert_ini) {
  16.     int d[n];
  17.     memset(d, 0, sizeof d);
  18.  
  19.     queue<int> fila;
  20.     fila.push(vert_ini);
  21.  
  22.     d[vert_ini] = 0;
  23.     while(!fila.empty()) {
  24.         int v = fila.front();
  25.         fila.pop();
  26.  
  27.         vis[v] = 1;
  28.         for(int j = 0; j < n; j++)
  29.             if((find(grafo[v].begin(), grafo[v].end(), j) != grafo[v].end()) && v != j && vis[j] == 0) {
  30.                 fila.push(j);
  31.                 vis[j] = 1;
  32.                 d[j] = d[v] + 1;
  33.  
  34.                 if(d[j] > d_max)
  35.                     d_max = d[j];
  36.             }
  37.     }
  38. }
  39.  
  40. int main() {
  41.  
  42.     memset(vis, 0, sizeof vis);
  43.  
  44.     cin >> n;
  45.  
  46.     for(int i = 0; i < n - 1; i++) {
  47.         int a, b;
  48.         cin >> a >> b;
  49.  
  50.         a--, b--;
  51.  
  52.         grafo[a].push_back(b);
  53.         grafo[b].push_back(a);
  54.     }
  55.  
  56.     for(int i = 0; i < n; i++)
  57.         bfs(i);
  58.  
  59.     cout << d_max << endl;
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement