#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vi> vvi;
vvi G;
bool works=1;
vector<int> d;
void dfs(int u, int p){
d[u]=1;
int c=0;
for(int v : G[u]){
if(v==p) continue;
dfs(v, u);
d[u]=max(d[u], d[v]+1);
if(d[v]>=3) c++;
}
if(c>=3) works=0;
}
int main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, m;
cin>>n>>m;
d.resize(n);
if(m>n-1){
cout<<"NO"<<endl;
return 0;
}
G.resize(n);
for(int i=0; i<m; i++){
int a, b; cin>>a>>b;
G[a-1].push_back(b-1);
G[b-1].push_back(a-1);
}
for(int i=0; i<n; i++) dfs(i, i);
if(!works){
cout<<"NO"<<endl;
return 0;
}
//check if there is a bad subgraph
cout<<"YES\n";
if(n==1) cout<<"1\n1";
else if (n==2){
cout<<"2\n2 2";
}
else{
cout<<2*(n-2)<<" ";
for(int i=2; i<n; i++) cout<<i<<" ";
for(int i=n-1; i>1; i--) cout<<i<<" ";
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |