Submission #1057652

#TimeUsernameProblemLanguageResultExecution timeMemory
1057652andecaandeciSenior Postmen (BOI14_postmen)C++17
38 / 100
846 ms54216 KiB
#include <bits/stdc++.h>
#define nikah ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define pll pair<ll,ll>
#define pb push_back
#define fi first
#define se second
const ll maxn = 5e5+7, modn = 1e9+7;
using namespace std;

ll n,m,cur=0;
vector<pll>adj[maxn];
vector<ll>ans[maxn];
ll par[maxn], par2[maxn], cnt[maxn];
bool cek[maxn];

void dfs(ll node) {
  for (auto [next, idx] : adj[node]) {
    if (cek[idx] || next == par[node]) continue;
    if (par[next] == -1) {
      par[next] = node;
      par2[next] = idx;
      dfs(next);
    } else {
      cur++;
      ans[cur].pb(next);
      cnt[next] -= 2;
      cek[idx] = 1;
      ll x = node;
      //cout<<next<<" ";
      while (x != next) {
      //  cout<<x<<" ";
        cek[par2[x]] = 1;
        ans[cur].pb(x);
        cnt[x] -= 2;
        x = par[x];
      }
    //  cout<<endl;
    }
    break;
  }
}

int main () {
  cin>>n>>m;
  for (ll i=1; i<=m; i++) {
    ll u,v; cin>>u>>v;
    adj[u].pb({v,i});
    adj[v].pb({u,i});
    cnt[u]++;
    cnt[v]++;
  }
  while (true) {
    bool cek2 = 0;
    for (ll i=1; i<=n; i++) {
      if (cnt[i] > 0) {
        cek2 = 1;
        for (ll j=1; j<=n; j++) par[j] = -1;
        par[i] = 0;
        dfs(i);
      }
    }
    if (cek2 == 0) break;
  }
  for (ll i=1; i<=cur; i++) {
    for (auto x : ans[i]) {
      cout<<x<<" ";
    }
    cout<<endl;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...