Submission #103594

#TimeUsernameProblemLanguageResultExecution timeMemory
103594luciocfSenior Postmen (BOI14_postmen)C++14
38 / 100
1078 ms13304 KiB
#include <bits/stdc++.h>
#define scan(x) do{while((x=getchar())<'0'); for(x-='0'; '0'<=(_=getchar()); x=(x<<3)+(x<<1)+_-'0');}while(0)
char _;

using namespace std;

const int maxn = 1e5+10;

typedef pair<int, int> pii;

bool markEdge[maxn], mark[maxn];

vector<pii> grafo[maxn];

stack<int> stk;

void dfs(int u)
{
	if (mark[u])
	{
		while (true)
		{
			int v = stk.top();
			stk.pop();

			mark[v] = 0;

			if (v == u)
			{
				printf("%d\n", v);
				break;
			}

			printf("%d ", v);
		}
	}

	for (auto v: grafo[u])
	{
		if (!markEdge[v.second])
		{
			mark[u] = 1;
			stk.push(u);
			markEdge[v.second] = 1;

			dfs(v.first);
		}
	}
}

int main(void)
{
	int n, m;
	scan(n); scan(m);

	for (int i = 1; i <= m; i++)
	{
		int u, v;
		scan(u); scan(v);

		grafo[u].push_back({v, i});
		grafo[v].push_back({u, i});
	}

	dfs(1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...