Submission #1124851

#TimeUsernameProblemLanguageResultExecution timeMemory
1124851aykhnSenior Postmen (BOI14_postmen)C++20
100 / 100
421 ms88744 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int MXN = 5e5 + 5;

int n, m;
vector<array<int, 2>> adj[MXN];
int idx[MXN], used[MXN];
vector<int> o;

void dfs(int a)
{
  while (idx[a] < adj[a].size())
  {
    if (used[adj[a][idx[a]][1]]) 
    {
      idx[a]++;
      continue;
    }
    used[adj[a][idx[a]][1]] = 1;
    idx[a]++;
    dfs(adj[a][idx[a] - 1][0]);
  }
  o.push_back(a);
}

signed main()
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= m; i++)
  {
    int u, v;
    cin >> u >> v;
    adj[u].push_back({v, i});
    adj[v].push_back({u, i});
  }
  dfs(1);
  fill(used + 1, used + n + 1, 0);
  vector<int> cur;
  for (int &i : o)
  {
    if (used[i])
    {
      while (used[i])
      {
        cout << cur.back() << ' ';
        used[cur.back()] = 0;
        cur.pop_back();
      }
      cout << '\n';
    }
    used[i] = 1;
    cur.push_back(i);
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...