提交记录 6871


用户 题目 状态 得分 用时 内存 语言 代码长度
lizongru noip18d. 【NOIP2018】旅行 Wrong Answer 72 1.646 ms 704 KB C++ 2.51 KB
提交时间 评测时间
2018-11-11 18:19:46 2020-08-01 00:52:05
#include<bits/stdc++.h>
using namespace std;
inline void read(int &x){
	x = 0;
	int p = 1;
	char c = getchar();
	while(!isdigit(c)){
		if(c == '-')p = -1;
		c = getchar();
	}
	while(isdigit(c)){
		x = (x << 1) + (x << 3) + (c ^ '0');
		c = getchar();
	}
	x *= p;
}
const int maxn = 5050;
vector<int>vec[maxn];
int n, m;
namespace sub1{
	vector<int>ans;
	bool vis[maxn];
	inline void dfs(int u){
		vis[u] = 1;
		ans.push_back(u);
		for(register int i = 0, sz = vec[u].size(); i < sz; ++i){
			int v = vec[u][i];
			if(!vis[v])dfs(v);
		}
	}
	inline void solve(){
		memset(vis, 0, sizeof(vis));
		dfs(1);
		for(register int i = 0, sz = ans.size(); i < sz; ++i){
			printf("%d ", ans[i]);
		}
	}
}
namespace sub2{
	stack<int>sta;
	vector<int>cir, ans;
	bool flag = 0, cjump = 0, nowjump = 0, entcir = 0;
	bool vis[maxn], iscir[maxn];
	int beg, nxt[10], tot = 0;
	inline void circle(int fir){
		while(!sta.empty() && sta.top() != fir){
			int u = sta.top();
			cir.push_back(u);
			iscir[u] = 1;
			sta.pop();
		}
		cir.push_back(fir);
		iscir[fir] = 1;
		sta.pop();
	}
	inline void get_cir(int u, int fa){
		vis[u] = 1;
		sta.push(u);
		for(register int i = 0, sz = vec[u].size(); i < sz; ++i){
			int v = vec[u][i];
			if(v == fa)continue;
			if(flag)return ;
			if(vis[v]){
				circle(v);
				flag = 1;
				return ;
			}
			get_cir(v, u);
		}
		sta.pop();
	}
	inline void dfs(int u){
		//cerr<<u<<endl;
		vis[u] = 1;
		ans.push_back(u);
		if((!entcir) && iscir[u]){
			entcir = 1;
			beg = u;
			for(register int i = 0, sz = vec[u].size(); i < sz; ++i){
				if(iscir[vec[u][i]])nxt[++tot] = vec[u][i];
			}
			if(nxt[1] > nxt[2])swap(nxt[1], nxt[2]);
			cjump = 1;
		}
		for(register int i = 0, sz = vec[u].size(); i < sz; ++i){
			int v = vec[u][i];
			if(cjump && iscir[v] && v > nxt[2]){
				//cerr<<u<<":::"<<nxt[2]<<endl;
				cjump = 0, nowjump = 1;
				continue;
			}
			if(!vis[v])dfs(v);
		}
		if(nowjump){
			if(u != beg)return ;
			else nowjump = 0;
		}
	}
	inline void solve(){
		memset(vis, 0, sizeof(vis));
		get_cir(1, 0);
		/*for(register int i = 0, sz = cir.size(); i < sz; ++i){
			printf("%d ", cir[i]);
		}*/
		//puts("");
		memset(vis, 0, sizeof(vis));
		dfs(1);
		for(register int i = 0, sz = ans.size(); i < sz; ++i){
			printf("%d ", ans[i]);
		}
	}
}
int main(){
	read(n), read(m);
	int u, v;
	for(register int i = 1; i <= m; ++i){
		read(u), read(v);
		vec[u].push_back(v);
		vec[v].push_back(u);
	}
	for(register int i = 1; i <= n; ++i){
		sort(vec[i].begin(), vec[i].end());
	}
	if(m == n - 1)sub1::solve();
	else sub2::solve();
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #158.9 us168 KBAcceptedScore: 4

Testcase #263.52 us168 KBAcceptedScore: 4

Testcase #362.83 us168 KBAcceptedScore: 4

Testcase #483.26 us168 KBAcceptedScore: 4

Testcase #583.2 us168 KBAcceptedScore: 4

Testcase #6321.61 us248 KBAcceptedScore: 4

Testcase #7320.91 us252 KBAcceptedScore: 4

Testcase #8323.14 us256 KBAcceptedScore: 4

Testcase #9328.21 us236 KBAcceptedScore: 4

Testcase #10326 us228 KBAcceptedScore: 4

Testcase #111.513 ms536 KBAcceptedScore: 4

Testcase #121.507 ms588 KBAcceptedScore: 4

Testcase #131.486 ms604 KBAcceptedScore: 4

Testcase #141.486 ms536 KBAcceptedScore: 4

Testcase #151.496 ms640 KBAcceptedScore: 4

Testcase #1661.1 us168 KBAcceptedScore: 4

Testcase #1760.29 us168 KBAcceptedScore: 4

Testcase #1884.58 us172 KBAcceptedScore: 4

Testcase #1986.48 us172 KBWrong AnswerScore: 0

Testcase #20165.89 us276 KBRuntime ErrorScore: 0

Testcase #21165.53 us276 KBRuntime ErrorScore: 0

Testcase #22165.05 us276 KBRuntime ErrorScore: 0

Testcase #231.646 ms704 KBWrong AnswerScore: 0

Testcase #24701.39 us608 KBRuntime ErrorScore: 0

Testcase #25704.09 us588 KBRuntime ErrorScore: 0


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