Submission #535463

#TimeUsernameProblemLanguageResultExecution timeMemory
535463ShelterSenior Postmen (BOI14_postmen)C++14
55 / 100
731 ms184544 KiB
#include <bits/stdc++.h>
 
#define len(x) (int)(x).size()
#define range(i, x, y) for(int i=x; i<y; i++)
#define sws ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define vint vector<int>
#define vll vector<long long>
#define vstr vector<string>
#define ll long long
#define F first
#define S second
#define pb push_back
#define pf push_front
#define del(a, n) (a).erase(a.begin()+(n))
#define mp make_pair
#define all(a) (a.begin(), a.end())
const int MAX = 1e6;
 
using namespace std;

vint sol;
unordered_multiset<int> gra[MAX];

void dfs(int node)
{
	while(gra[node].size())
	{
        int v;
		for(auto x : gra[node]){
                v = x;
                break;
            }
            gra[node].erase(v);
            gra[v].erase(node);
		dfs(v);
	}
	sol.pb(node);
}

bool vs[MAX];
void decompose() { 
	stack<int> cur; 
	vector<vint> re; 
	for(int u:sol) { 
		if(!vs[u]) { 
			cur.push(u); 
			vs[u] = 1; 
		}
		else { 
			vint cyc; 
			while(vs[u]) { 
				cyc.pb(cur.top()); 
				vs[cur.top()] = 0; 
				cur.pop(); 
			}
			for(auto x : cyc){
                cout << x << " ";
            }
            cout << endl;
			cur.push(u); 
			vs[u] = 1; 
		}
	}
}

int main(){
    sws
    int n, m;
    cin >> n >> m;
    for(int i=0; i<m; i++){
        int u, v;
        cin >> u >> v;
        gra[u].insert(v);
        gra[v].insert(u);
    }
    dfs(1);
    decompose();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...