Submission #1231609

#TimeUsernameProblemLanguageResultExecution timeMemory
1231609julia_08Senior Postmen (BOI14_postmen)C++20
100 / 100
261 ms62508 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 5e5 + 10;

int marc[MAXN], edge[MAXN];

vector<pair<int, int>> adj[MAXN];

vector<int> path;

void dfs(int v){

  while(!adj[v].empty()){

    auto [u, i] = adj[v].back();
    adj[v].pop_back();

    if(edge[i]) continue;
    edge[i] = 1;

    dfs(u);

  }

  path.push_back(v);

}

int main(){
  cin.tie(0)->sync_with_stdio(0);

  int n, m; cin >> n >> m;

  while(m--){
    int a, b; cin >> a >> b;
    adj[a].push_back({b, m});
    adj[b].push_back({a, m});
  }

  dfs(1);

  stack<int> tour;

  for(auto v : path){

    if(marc[v]){

      while(tour.top() != v){
        cout << tour.top() << " ";
        marc[tour.top()] --;
        tour.pop();
      }

      cout << v << "\n";

    } else{

      marc[v] ++;
      tour.push(v);
    }

  }

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