提交记录 9129


用户 题目 状态 得分 用时 内存 语言 代码长度
Richard_for_OI 2002. 【NOIP2018】旅行(加强版) Wrong Answer 60 56.925 ms 9420 KB C++ 1.68 KB
提交时间 评测时间
2019-04-13 21:17:31 2020-08-01 01:32:48
#include <stdio.h>
#include <algorithm>

const int MAXN = 300005;

int n, m;

struct edge {
	int u, v, id;
};

bool operator < (const edge &a, const edge &b) {
	return a.u < b.u || (a.u == b.u && a.v < b.v);
}

edge edges[MAXN * 2];
edge *first[MAXN];

int stack[MAXN];
int stack_eid[MAXN];
bool instack[MAXN];
int top;
bool found;

bool is_on_cycle[MAXN];

void dfs(int u, int last) {
	stack[++top] = u;
	instack[u] = true;
	for (edge *e = first[u]; e->u == u; e++) {
		int v = e->v;
		if (v == last) continue;
		if (instack[v]) {
			found = true;
			is_on_cycle[e->id] = true;
			while (stack[top] != v) {
				is_on_cycle[stack_eid[top - 1]] = true;
				--top;
			}
			return;
		}
		stack_eid[top] = e->id;
		dfs(v, u);
		if (found) return;
	}
	instack[u] = false;
	--top;
}

int ans_idx;

bool visit[MAXN];
bool del;

void dfs(int u) {
	printf("%d%c", u, " \n"[++ans_idx == n]);
	visit[u] = true;
	++top;
	bool done = false;
	for (edge *e = first[u]; e->u == u; e++) {
		int v = e->v;
		if (visit[v]) continue;
		edge *e1 = e + 1;
		while (e1->u == u && visit[e1->v]) ++e1;
		if (e1->u == u) {
			stack[top] = e1->v;
		} else {
			--top;
			done = true;
		}
		if (!del && is_on_cycle[e->id] && v > stack[top]) {
			del = true;
		} else {
			dfs(v);
		}
	}
	if (!done) --top;
}

int main() {
	scanf("%d%d", &n, &m);
	if (n == 1) {
		return puts("1"), 0;
	}
	for (int i = 0; i < m; i++) {
		int u, v;
		scanf("%d%d", &u, &v);
		edges[i * 2] = (edge){u, v, i};
		edges[i * 2 + 1] = (edge){v, u, i};
	}
	std::sort(edges, edges + 2 * m);
	first[1] = edges;
	for (int i = 1; i < 2 * m; i++) {
		if (edges[i].u != edges[i - 1].u) {
			first[edges[i].u] = edges + i;
		}
	}
	dfs(1, 0);
	top = 0;
	stack[0] = n + 1;
	dfs(1);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #113.33 us44 KBAcceptedScore: 5

Testcase #217.02 us44 KBAcceptedScore: 5

Testcase #351.11 us64 KBAcceptedScore: 5

Testcase #447.94 us64 KBAcceptedScore: 5

Testcase #51.947 ms432 KBAcceptedScore: 5

Testcase #61.935 ms412 KBAcceptedScore: 5

Testcase #747.176 ms7 MB + 208 KBAcceptedScore: 5

Testcase #847.308 ms5 MB + 1012 KBAcceptedScore: 5

Testcase #956.925 ms9 MB + 192 KBWrong AnswerScore: 0

Testcase #1041.624 ms9 MB + 192 KBWrong AnswerScore: 0

Testcase #1136.861 ms9 MB + 192 KBWrong AnswerScore: 0

Testcase #1216.862 ms6 MB + 904 KBRuntime ErrorScore: 0

Testcase #131.988 ms444 KBAcceptedScore: 5

Testcase #141.961 ms508 KBAcceptedScore: 5

Testcase #1546.234 ms7 MB + 1012 KBAcceptedScore: 5

Testcase #1646.677 ms8 MB + 700 KBAcceptedScore: 5

Testcase #1730.172 ms9 MB + 192 KBWrong AnswerScore: 0

Testcase #1816.865 ms6 MB + 904 KBRuntime ErrorScore: 0

Testcase #1941.004 ms9 MB + 192 KBWrong AnswerScore: 0

Testcase #2052.386 ms9 MB + 204 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-04 19:38:10 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠