제출 #1119682

#제출 시각아이디문제언어결과실행 시간메모리
1119682vjudge1Senior Postmen (BOI14_postmen)C++17
100 / 100
421 ms44616 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define ll long long
int n, m;
vector<vector<pair<int, int>>> a;
bool kt[500005];
bool check[500005];
int l[500005], r[500005];
void get_ans(int u)
{
    vector<int> ans;
    ans.push_back(u);
    vector<int> c;
    while (a[u].size())
    {
        auto [v, id] = a[u].back();
        a[u].pop_back();
        if (kt[id] == true)
            continue;
        if (check[v] == true)
        {
            vector<int> res;
            res.clear();
            while (!ans.empty() && ans.back() != v)
            {
                res.push_back(ans.back());
                check[ans.back()] = false;
                ans.pop_back();
            }
            res.push_back(v);
            reverse(res.begin(), res.end());
            for (int i : res)
            {
                c.push_back(i);
                cout << i << " ";
            }
            cout << endl;
            u = v;
            kt[id] = true;
            continue;
        }
        kt[id] = true;
        check[v] = true;
        ans.push_back(v);
        u = v;
    }
    ans.pop_back();
    for (int i : ans)
    {
        check[i] = false;
        cout << i << " ";
    }
    if (ans.size()) cout << endl;
    for (int i : ans)
    {
        get_ans(i);
    }
    for (int i : c)
    {
        get_ans(i);
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> m;
    a.assign(n + 1, {});
    for (int i = 1; i <= m; i++)
    {
        int u, v;
        cin >> u >> v;
        l[i] = u;
        r[i] = v;
        a[u].push_back({v, i});
        a[v].push_back({u, i});
    }
    get_ans(1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...