Submission #1353810

#TimeUsernameProblemLanguageResultExecution timeMemory
1353810MuhammadSaramSenior Postmen (BOI14_postmen)C++20
0 / 100
1095 ms3440 KiB
#include <bits/stdc++.h>

using namespace std;

#define all(v) v.begin(), v.end()

const int M = 5e5 + 1;

vector<pair<int,int>> nei[M];
vector<int> ind[M];
bool vis[M];

vector<int> ans;

vector<int> f(int l,int r)
{
	vector<int> v;
	for (int i=l;i<r;)
	{
		if (ind[ans[i]].size()>1 && ind[ans[i]][ind[ans[i]].size()-2]<r)
		{
			int y=ind[ans[i]][1];
			vector<int> v1=f(i,y);
			for (int wh:v1)
				cout<<wh<<' ';
			cout<<endl;
			i=y;
		}
		else
			v.push_back(ans[i]), ind[ans[i++]].pop_back();
	}
	return v;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL), cout.tie(NULL);

	int n,m;
	cin>>n>>m;
	for (int i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		nei[u].push_back({v,i});
		nei[v].push_back({u,i});
	}
	vector<pair<int,int>> v={{1,0}};
	while (v.size())
	{
		pair<int,int> p=v.back();
		int u=p.first;
		vis[p.second]=1;
		if (nei[u].empty())
			v.pop_back(), ans.push_back(u);
		else
		{
			if (!vis[nei[u].back().second]) v.push_back(nei[u].back());
			nei[u].pop_back();
		}
	}
	for (int i=1;i<=n;i++)
		nei[i].clear();
	ans.pop_back();
	for (int i=0;i<ans.size();i++)
		ind[ans[i]].push_back(i);
	for (int i=0;i<M;i++) reverse(all(ind[i]));
	vector<int> v1=f(0,ans.size());
	for (int i:v1)
		cout<<i<<' ';
	cout<<endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...