Submission #1262647

#TimeUsernameProblemLanguageResultExecution timeMemory
1262647mkkkkkkkkSenior Postmen (BOI14_postmen)C++20
0 / 100
620 ms44984 KiB
#include <bits/stdc++.h>

using namespace std;

set<int> adj[500001];
vector<int> euler;

void dfs(int i)
{
    for(;adj[i].size()>0;)
    {
        int br=0;
        for(auto it : adj[i])
        {
            br=it;
        }
        adj[i].erase(br);
        adj[br].erase(i);
        dfs(br);

    }
    euler.push_back(i);

}

int inde[500001];


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n,m;
    cin>>n>>m;
    for(int m1=m;m1>0;m1--)
    {
        int a,b;
        cin>>a>>b;
        adj[a].insert(b);
        adj[b].insert(a);

    }
    memset(inde,-1,sizeof(inde));
    dfs(1);
    vector<int> temp;


    for(int i=0;i<euler.size();i++)
    {
        if(inde[euler[i]]==-1)
        {
            temp.push_back(euler[i]);
            inde[euler[i]]=temp.size()-1;
        }
        else
        {
            cout<<euler[i]<<" ";
            vector<int> res;
            while(temp[temp.size()-1]!=euler[i])
            {
                res.push_back(temp[temp.size()-1]);
                inde[temp[temp.size()-1]]=-1;
                temp.pop_back();
            }
            reverse(res.begin(),res.end());
            for(auto it : res)
                cout<<it<<" ";
            cout<<"\n";
            inde[euler[i]]=temp.size()-1;
        }
    }
    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...