제출 #1119626

#제출 시각아이디문제언어결과실행 시간메모리
1119626vjudge1어르신 집배원 (BOI14_postmen)C++17
100 / 100
394 ms40784 KiB
#include <bits/stdc++.h>

#define ll int
#define fr(i, d, c) for(ll i = d; i <= c; i++)
#define fl(i, d, c) for(ll i = d; i >= c; i--)
const int N = 5e5 + 9;
using namespace std;
    
ll n, m;
bool dd[N], xoa[N];
vector<pair<ll, ll>> adj[N];
stack<ll> st;

void clear_back(vector<pair<ll, ll>> & x) {
  while(x.size() && xoa[x.back().second]) x.pop_back();
}

void run(ll u, ll bd) {
  dd[u] = true;
  st.push(u);
  clear_back(adj[u]);
  auto [v, id] = adj[u].back();
  xoa[id] = true;

  if(dd[v] == true) {
    while(true) {
      ll t = st.top();
      st.pop();
      cout<<t<<" ";
      dd[t] = false;
      if(t == v) break;
    }
    cout<<'\n';
  }
  if(v != bd) run(v, bd);
}

int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  
  cin >> n >> m;
  fr(i, 1, m) {
    ll x, y;
    cin>> x >> y;
    adj[x].push_back({y, i});
    adj[y].push_back({x, i});
  }
  fr(i, 1, n) {
    clear_back(adj[i]);
    while(adj[i].size()) {
      run(i, i);
      clear_back(adj[i]);
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...