Submission #814638

#TimeUsernameProblemLanguageResultExecution timeMemory
814638t6twotwoNewspapers (CEOI21_newspapers)C++17
20 / 100
3 ms8532 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define FFOR(i,a,b,c) for(int i=(a);(c)>0?i<=(b):i>=(b);i+=(c))
#define FOOR(i,a,b) FFOR(i,a,b-1,1)
#define ROOF(i,a,b) FFOR(i,b-1,a,-1)
#define FOR(i,n) FOOR(i,0,n)
#define ROF(i,n) ROOF(i,0,n)
#define FORR(x,v) for(auto &x:v)
#define all(v) (v).begin(),(v).end()
#define lla(v) (v).rbegin(),(v).rend()
#define sz(v) (int)((v).size())
#define vc vector
#define pb push_back
#define ppb pop_back
#define bk back()
#define fr front()
#define pp pop()
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define bg begin()
#define en end()
#define em empty()
#define f first
#define s second
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N,M;
    cin>>N>>M;
    vc<int> adj(N);
    FOR(i,M){
        int x,y;
        cin>>x>>y;
        x--,y--;
        adj[x]+=1<<y;
        adj[y]+=1<<x;
    }
    if(M!=N-1){
        cout<<"NO\n";
        return 0;
    }
    if(N>20){
        cout<<"YES\n";
        cout<<2*(N-2)<<"\n";
        FOOR(i,2,N) cout<<i<<" ";
        FOOR(i,2,N) cout<<(N%2==0?N-i+1:i)<<" ";
        return 0;
    }
    vector<int> f(1<<N,-1),g(1<<N);
    queue<int> q;
    f[(1<<N)-1]=0;
    q.push((1<<N)-1);
    while(!q.em){
        int m=q.fr;q.pp;
        FOR(i,N){
            if(~m>>i&1) continue;
            int m2=0;
            FOR(j,N){
                if(i!=j&&(m>>j&1)) m2|=adj[j];
            }
            if(f[m2]==-1){
                f[m2]=m;
                g[m2]=i;
                q.push(m2);
            }
        }
    }
    if(f[0]==-1){
        cout<<"NO\n";
        return 0;
    }
    cout<<"YES\n";
    vc<int> ans;
    for(int i=0;i!=(1<<N)-1;i=f[i]) ans.pb(g[i]);
    reverse(all(ans));
    cout<<sz(ans)<<"\n";
    FORR(x,ans)cout<<x+1<<" ";
    return 6/22;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...