Submission #1203723

#TimeUsernameProblemLanguageResultExecution timeMemory
1203723repmannSenior Postmen (BOI14_postmen)C++20
0 / 100
160 ms327680 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int N, M;
bitset <500001> D, V;
stack <ll> VG[500001];
inline void Euler()
{
  int node = 1, temp;
  stack <int> S, T;
  S.push(node);
  while(S.size())
  {
    node = S.top();
    while(VG[node].size() && V[VG[node].top() >> 20]) VG[node].pop();
    if(VG[node].size())
    {
      V[VG[node].top() >> 20] = true;
      S.push(VG[node].top() & ((1 << 20) - 1));
      VG[node].pop();
      continue;
    }
    if(D[node])
    {
      while(D[node]) {cout << T.top() << ' '; D[T.top()] = false; T.pop();}
      cout << '\n';
    }
    T.push(node); D[node] = true;
    S.pop();
  }
  return;
}
int main()
{
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> N >> M;
  int u, v;
  for(ll i = 1; i <= M; i++)
  {
    cin >> u >> v;
    VG[u].push((i << 20) + v);
    VG[v].push((i << 20) + u);
  }
  Euler();

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...