Submission #103585

#TimeUsernameProblemLanguageResultExecution timeMemory
103585luciocfSenior Postmen (BOI14_postmen)C++14
38 / 100
1089 ms36372 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 5e5+10;

typedef pair<int, int> pii;

int qtd;

bool markEdge[maxn], mark[maxn];

vector<pii> grafo[maxn];
vector<int> ans[maxn];

stack<int> stk;

void dfs(int u)
{
	if (mark[u])
	{
		++qtd;

		while (true)
		{
			int v = stk.top();
			stk.pop();

			mark[v] = 0;
			ans[qtd].push_back(v);

			if (v == u) break;
		}
	}

	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;
	scanf("%d %d", &n, &m);

	for (int i = 1; i <= m; i++)
	{
		int u, v;
		scanf("%d %d", &u, &v);

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

	dfs(1);

	for (int i = 1; i <= qtd; i++)
	{
		printf("%d", ans[i][0]);
		for (int j = 1; j < ans[i].size(); j++)
			printf(" %d", ans[i][j]);
		printf("\n");
	}
}

Compilation message (stderr)

postmen.cpp: In function 'int main()':
postmen.cpp:68:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j = 1; j < ans[i].size(); j++)
                   ~~^~~~~~~~~~~~~~~
postmen.cpp:52:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &m);
  ~~~~~^~~~~~~~~~~~~~~~~
postmen.cpp:57:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &u, &v);
   ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...