Submission #799723

#TimeUsernameProblemLanguageResultExecution timeMemory
799723JohannNewspapers (CEOI21_newspapers)C++14
4 / 100
9 ms452 KiB
#include "bits/stdc++.h"
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()

int N, M;
vvi adj;
bool possible;
vi cnt[2];

void dfs(int v, int p)
{
    cnt[0][v] = 1;
    cnt[1][v] = 0;
    for (int u : adj[v])
        if (u != p)
        {
            dfs(u, v);
            cnt[0][v] += cnt[1][u];
            cnt[1][v] += cnt[0][u];
        }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> N >> M;
    if (M > N - 1)
    {
        cout << "NO\n";
        return 0;
    }

    adj.resize(N);

    for (int i = 0, a, b; i < M; ++i)
    {
        cin >> a >> b;
        --a, --b;
        adj[a].push_back(b), adj[b].push_back(a);
    }

    possible = true;
    cnt[0].resize(N), cnt[1].resize(N);
    for (int v = 0; v < N; ++v)
    {
        dfs(v, v);
        int crit = 0;
        for (int u : adj[v])
            if (cnt[1][u] >= 2)
                ++crit;
        if (crit > 2)
            possible = false;
    }

    if (possible)
    {
        cout << "YES\n";

        vi ans;
        ans.push_back(0);
        cout << sz(ans) << '\n';
        for (int x : ans)
            cout << x + 1 << " ";
        cout << '\n';
    }
    else
        cout << "NO\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...