Advertisement
Guest User

Untitled

a guest
Nov 13th, 2016
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <set>
  5. #include <stack>
  6. #include <queue>
  7. #include <map>
  8. #include <string>
  9. #include <cmath>
  10. #include <stdio.h>
  11. using namespace std;
  12.  
  13. #define lint long long
  14. #define INF 1000000000
  15. #define MOD 1000000007
  16. #define pb push_back
  17. #define mp make_pair
  18.  
  19. int used[10005];
  20.  
  21. vector <int> g[10005];
  22. int mxg = -1, mx;
  23. int pp[10005];
  24. int f[10005];
  25.  
  26. bool cmp(int u, int v) {
  27.     return f[u] < f[v];
  28. }
  29.  
  30. void dfs(int v, int x) {
  31.     if (x > mx) {
  32.         mx = x;
  33.         mxg = v;
  34.     }
  35.     used[v] = 1;
  36.  
  37.     for (int i = 0; i < g[v].size(); ++i) {
  38.         int to = g[v][i];
  39.         if (used[to]) continue;
  40.         --f[to];
  41.     }
  42.  
  43.     sort(g[v].begin(), g[v].end(), cmp);
  44.     for (int i = 0; i < g[v].size(); ++i) {
  45.         int to = g[v][i];
  46.         if (used[to]) continue;
  47.         pp[to] = v;
  48.         dfs(to, x + 1);
  49.     }
  50. }
  51.  
  52. int st[100005];
  53. int main() {
  54.     int m, n;
  55.     scanf("%d %d", &n, &m);
  56.  
  57.     for (int i = 0; i < m; ++i) {
  58.         int aa, bb;
  59.         scanf("%d %d", &aa, &bb);
  60.         g[bb].pb(aa);
  61.         g[aa].pb(bb);
  62.         ++f[aa];
  63.         ++f[bb];
  64.     }
  65.  
  66.     if (n == 1) {
  67.         printf("1\n1");
  68.         return 0;
  69.     }
  70.  
  71.     mx = -1;
  72.     dfs(1, 1);
  73.  
  74.     for (int i = 1; i <= n; ++i) {
  75.         used[i] = 0;
  76.     }
  77.    
  78.     pp[mxg] = -1;
  79.     mx = -1;
  80.     dfs(mxg, 1);
  81.  
  82.     printf("%d\n", mx);
  83.     while (1) {
  84.         printf("%d ", mxg);
  85.         mxg = pp[mxg];
  86.         if (mxg == -1) break;
  87.     }
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement