Submission #1209102

#TimeUsernameProblemLanguageResultExecution timeMemory
1209102Kacper_ZiemeckiSenior Postmen (BOI14_postmen)C++20
0 / 100
1098 ms44584 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__)

vector<vector<ll>> adj;
vector<ll> euler;
stack<ll> st;
unordered_map<ll,ll> cnt;
vector<unordered_map<ll,bool>> vis;

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

int main()
{

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

  ll n,m,u,v;
  cin >> n >> m;
  adj.assign(n+1, {});
  vis.assign(n+1, {});
  for(ll i = 0; i < m; i++){
    cin >> u >> v;
    adj[u].pb(v);
    adj[v].pb(u);
  }
  dfs(1);
  // 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]++;
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...