Submission #1209098

#TimeUsernameProblemLanguageResultExecution timeMemory
1209098Kacper_ZiemeckiSenior Postmen (BOI14_postmen)C++20
38 / 100
144 ms327680 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define pb push_back
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)

void dfs(ll u, vector<vector<ll>>& adj, vector<vector<bool>>& vis, vector<ll>& euler){
  for(auto v : adj[u]){
    if(!vis[u][v]){
      vis[u][v]=true; vis[v][u]=true;
      dfs(v,adj,vis,euler);
    }
  }
  euler.pb(u);
}

void solve()
{
  ll n,m;
  cin >> n >> m;
  vector<vector<ll>> adj(n+1);
  vector<ll> euler;
  stack<ll> st;
  unordered_map<ll,ll> cnt;
  vector<vector<bool>> vis(n+1, vector<bool>(n+1, false));
  ll u,v;
  for(ll i = 0; i < m; i++){
    cin >> u >> v;
    adj[u].pb(v);
    adj[v].pb(u);
  }
  dfs(1,adj,vis,euler);
  // for(auto el : euler) cout << el << " ";
  // cout << endl << endl;
  for(auto el : euler){
    if(cnt[el] > 0){
      while(st.top() != el){
        cnt[st.top()]--;
        cout << st.top() << " ";
        st.pop();
      }
      cout << st.top() << endl;
    } else{
      st.push(el);
      cnt[el]++;
    }
  }
} 
  

int main()
{

  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);

  
  solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...