Submission #576493

#TimeUsernameProblemLanguageResultExecution timeMemory
576493juggernautNewspapers (CEOI21_newspapers)C++14
8 / 100
1 ms340 KiB
#include<bits/stdc++.h>
#define fr first
#define sc second
using namespace std;
typedef long long ll;
typedef long double ld;
#define USING_ORDERED_SET 0
#if USING_ORDERED_SET
#include<bits/extc++.h>
using namespace __gnu_pbds;
template<class T>using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
#endif
template<class T>void umax(T &a,T b){if(a<b)a=b;}
template<class T>void umin(T &a,T b){if(b<a)a=b;}
#ifdef juggernaut
    #define printl(args...)printf(args)
#else
    #define printl(args...)((void)0)
#endif
vector<int>g[1005];
bool vis[1005];
void dfs(int v,int p){
	if(vis[v]){
		puts("NO");
		exit(0);
	}
	vis[v]=1;
	for(int to:g[v])if(to!=p)dfs(to,v);
}
int main(){
	int n;
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int m;
	cin>>n>>m;
	while(m--){
		int x,y;
		cin>>x>>y;
		g[x].push_back(y);
		g[y].push_back(x);
	}
	dfs(1,0);
	if(n==1){
		puts("YES\n1\n1");
		return 0;
	}else if(n==2||n==3){
		puts("YES\n2\n2 2");
		return 0;
	}
	vector<int>vec;
	if(n&1){
		for(int i=2;i<n;i++)vec.push_back(i);
		for(int i=2;i<n;i++)vec.push_back(i);
	}else{
		for(int i=2;i<n;i++)vec.push_back(i);
		for(int i=n-1;i>1;i--)vec.push_back(i);
	}
	printf("YES\n%d\n",int(vec.size()));
	for(int to:vec)printf("%d ",to);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...