fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4. #define ll long long
  5. #define ull unsigned long long
  6. #define fi first
  7. #define se second
  8. #define SZ(x) ((int)(x).size())
  9. #define ALL(x) (x).begin(), (x).end()
  10. #define MASK(i) ((1LL)<<(i))
  11. #define GETBIT(x,i) (((x)>>(i))&1)
  12. #define TURNOFF(x,i) ((x)&(~(1<<i)))
  13. #define CNTBIT(x) __builtin_popcount(x)
  14. #define LOG 20
  15. #define MASK(i) ((1LL)<<(i))
  16. #define EL cout << "\n"
  17. #define FU(i, a, b) for(int i=a; i<=b; i++)
  18. #define FD(i, a, b) for(int i=a; i>=b; i--)
  19. #define REP(i, x) for(int i=0; i<x; i++)
  20. #define REPD(i, x) for(int i=x-1; i>=0; i--)
  21. const int MAX = 2e5 + 5;
  22. const int mod = 1e9 + 7;
  23. const int base = 31;
  24. const int INF = 1e9 + 7;
  25. typedef pair<int, int> ii;
  26.  
  27. #define task "long"
  28. void init()
  29. {
  30. if (fopen(task".inp","r"))
  31. {
  32. freopen(task".inp","r",stdin);
  33. freopen(task".out","w",stdout);
  34. }
  35. else if (fopen(task".in", "r"))
  36. {
  37. freopen(task".in", "r", stdin);
  38. freopen(task".out", "w", stdout);
  39. }
  40. }
  41.  
  42. void fastio()
  43. {
  44. ios_base::sync_with_stdio(false);
  45. cin.tie(0);
  46. cout.tie(0);
  47. }
  48. int dx[]={0,1,0,-1,1,1,-1,-1};
  49. int dy[]={1,0,-1,0,1,-1,1,-1};
  50. template<class X, class Y> bool maximize(X &x, Y y){ if (x < y) {x = y; return true;} return false;};
  51. template<class X, class Y> bool minimize(X &x, Y y){ if (x > y) {x = y; return true;} return false;};
  52. void add(int &x, int y) { x += y; if (x>=mod) x-=mod;}
  53. void sub(int &x, int y) { x -= y; if (x<0) x+=mod;}
  54. int mul(int x, int y) {return 1LL * x * y % mod;}
  55. int calPw(int x, int y)
  56. {
  57. int ans = 1;
  58. while(y)
  59. {
  60. if (y&1) ans = 1LL * ans * x % mod;
  61. x = 1LL * x * x % mod;
  62. y >>= 1;
  63. }
  64. return ans;
  65. }
  66. int n, m, sz=0;
  67. int deg[205], w[205][205], node[205];
  68. bool edge[205][205];
  69. void read()
  70. {
  71. cin >> n >> m;
  72. FU(i, 1, m)
  73. {
  74. int u, v, c; cin >> u >> v >> c;
  75. edge[u][v] = edge[v][u] = true;
  76. w[u][v] = w[v][u] = c;
  77. ++deg[u]; ++deg[v];
  78. }
  79. }
  80. void sol()
  81. {
  82. stack<int> st;
  83. st.push(1);
  84. while(!st.empty())
  85. {
  86. int u = st.top();
  87. if (deg[u] == 0)
  88. {
  89. node[++sz]= u;
  90. st.pop();
  91. continue;
  92. }
  93. FU(v, 1, n) if (edge[u][v])
  94. {
  95. edge[u][v] = edge[v][u] = false;
  96. --deg[u]; --deg[v];
  97. st.push(v);
  98. break;
  99. }
  100. }
  101. if (sz != m + 1) {cout << -1; return;}
  102. cout << sz, EL;
  103. FU(i, 1, sz) cout << node[i] << " ";
  104. }
  105. signed main()
  106. {
  107. fastio();
  108. init();
  109. int TEST = 1;
  110. //cin >> TEST;
  111. while(TEST--)
  112. {
  113. read();
  114. sol();
  115. }
  116. }
  117.  
Success #stdin #stdout 0.01s 5536KB
stdin
Standard input is empty
stdout
1
1