Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <iomanip>
  6. //#include <ext\pb_ds\assoc_container.hpp>
  7.  
  8. //#pragma comment(linker, "/stack:200000000")
  9. //#pragma GCC optimize("Ofast")
  10. //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  11.  
  12. #define x first
  13. #define y second
  14. #define endl '\n'
  15. #define int long long
  16.  
  17. using namespace std;
  18. //using namespace __gnu_pbds;
  19.  
  20. //typedef tree <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> tree_set;
  21. typedef pair <int, int> pii;
  22. typedef long double ld;
  23.  
  24. const int N = 1e5 + 5;
  25.  
  26. vector <int> po;
  27. vector <int> g[N];
  28. bool used[N];
  29. int ans[N];
  30.  
  31. bool cmp(int a, int b)
  32. {
  33. return po[a] > po[b];
  34. }
  35.  
  36. void dfs(int v)
  37. {
  38. used[v] = true;
  39. for (auto el : g[v])
  40. if (!used[el])
  41. {
  42. ans[el] = v + 1;
  43. dfs(el);
  44. }
  45. }
  46.  
  47. main()
  48. {
  49. ios_base :: sync_with_stdio(0);
  50. cin.tie(0);
  51. cout.tie(0);
  52. int t;
  53. cin >> t;
  54. for (int _ = 0; _ < t; ++_)
  55. {
  56. int n, m;
  57. cin >> n >> m;
  58. po.clear();
  59. po.resize(n);
  60. for (int i = 0; i < m; ++i)
  61. {
  62. int a, b;
  63. cin >> a >> b;
  64. g[--a].push_back(--b);
  65. g[b].push_back(a);
  66. ++po[a];
  67. ++po[b];
  68. }
  69. for (int i = 0; i < n; ++i)
  70. sort(g[i].begin(), g[i].end(), cmp);
  71. int root = -1;
  72. for (int i = 0; i < n; ++i)
  73. if (po[i] == n - 1)
  74. {
  75. root = i;
  76. break;
  77. }
  78. if (root == -1)
  79. {
  80. cout << "No\n";
  81. for (int i = 0; i < n; ++i)
  82. g[i].clear();
  83. continue;
  84. }
  85. cout << "Yes\n";
  86. dfs(root);
  87. for (int i = 0; i < n; ++i)
  88. {
  89. cout << ans[i] << ' ';
  90. g[i].clear();
  91. used[i] = false;
  92. ans[i] = 0;
  93. }
  94. cout << endl;
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement