Advertisement
slik1977

Evtyukhov_Tipovik4_ex6

May 27th, 2021
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<vector<int>> g;
  4. int n;
  5.  
  6. int bfs (int s){
  7.     queue<int> q;
  8.     q.push (s);
  9.     vector<bool> used (n);
  10.     vector<int> d (n), p (n);
  11.     used[s] = true;
  12.     p[s] = -1;
  13.     while (!q.empty()) {
  14.         int v = q.front();
  15.         q.pop();
  16.         for (size_t i=0; i<g[v].size(); ++i) {
  17.             int to = g[v][i];
  18.             if (!used[to]) {
  19.                 used[to] = true;
  20.                 q.push (to);
  21.                 d[to] = d[v] + 1;
  22.                 p[to] = v;
  23.             }
  24.         }
  25.     }
  26.  
  27.     int mx = -2;
  28.     for (int i = 0; i < n; i++){
  29.         mx = max(mx, d[i]);
  30.     }
  31.     return mx;
  32. }
  33.  
  34.  
  35.  
  36. int main(){
  37.     n = 10;
  38.     int m = 9;
  39.     g.resize(n, vector<int> ());
  40.     int help[n][n];
  41.     for (int i = 0; i < n; i++)
  42.         for (int j = 0; j < n; j++)
  43.             help[i][j] = 0;
  44.  
  45.     for (int i = 0; i < m; i++){
  46.         int a, b;
  47.         cin >> a >> b;
  48.         a--;
  49.         b--;
  50.         help[a][b]++;
  51.         help[b][a]++;
  52.         g[a].push_back(b);
  53.         g[b].push_back(a);
  54.     }
  55.  
  56.  
  57.     vector<int> exentricitet(n, 0);
  58.  
  59.     for(int i = 0; i < n; i++)
  60.         exentricitet[i] = bfs(i);
  61.  
  62.     int mn = 1e8;
  63.     for (int i = 0; i < n; i++)
  64.         mn = min(mn, exentricitet[i]);
  65.  
  66.     cout << "CENTER " << endl;
  67.     for (int i = 0; i < n; i++){
  68.         if (exentricitet[i] == mn) cout << i + 1 << " ";
  69.     }
  70.     cout << endl;
  71.  
  72.     cout << "RADIUS " << endl;
  73.     cout << mn << endl;
  74.  
  75.     int mx = -1;
  76.     for(int i = 0; i < n; i++){
  77.         mx = max(mx, exentricitet[i]);
  78.     }
  79.  
  80.     cout << "DIAMETER " << endl;
  81.     cout << mx << endl;
  82.  
  83.     vector<int> leaves;
  84.     for (int i = 0; i < n; i++){
  85.         if (g[i].size() == 1)
  86.             leaves.push_back(i + 1);
  87.     }
  88.  
  89.     cout << "LEAVES " << endl;
  90.     for (auto x: leaves) cout << x << " ";
  91.  
  92. }
  93. /*
  94. 1 2
  95. 1 5
  96. 1 3
  97. 2 4
  98. 2 6
  99. 3 7
  100. 4 8
  101. 6 9
  102. 5 10
  103. */
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement