Submission #1301221

#TimeUsernameProblemLanguageResultExecution timeMemory
1301221Davdav1232Newspapers (CEOI21_newspapers)C++20
54 / 100
19 ms2564 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...