Submission #857980

# Submission time Handle Problem Language Result Execution time Memory
857980 2023-10-07T08:23:56 Z danikoynov Newspapers (CEOI21_newspapers) C++14
20 / 100
2 ms 14684 KB
#include<bits/stdc++.h>
#define endl '\n'

using namespace std;
typedef long long ll;

void speed()
{
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);
}

const int maxn = 1010;

int n, m;
void solve_chain()
{
  if (n == 1)
    {
        cout << "YES" << endl;
        cout << 1 << endl;
        cout << 1 << endl;
        return;
    }
    if (n == 2)
    {
        cout << "YES" << endl;
        cout << 2 << endl;
        cout << 1 << " " << 1 << endl;
        return;
    }
    cout << "YES" << endl;
    cout << (n - 2) * 2 << endl;
    for (int i = 2; i < n; i ++)
        cout << i << " ";
    for (int i = n - 1; i > 1; i --)
        cout << i << " ";
    cout << endl;
}

vector < int > adj[maxn];

const int maxmask = (1 << 21);
int dp[maxmask], from[maxmask], last[maxmask];

int transition_mask(int mask, int ver)
{
    int new_mask = 0;
    if ((mask & (1 << (ver - 1))) > 0)
        mask -= (1 << (ver - 1));

    for (int v = 1; v <= n; v ++)
    {
        if ((mask & (1 << (v - 1))) == 0)
            continue;

        for (int u : adj[v])
            new_mask |= (1 << (u - 1));
    }

    return new_mask;
}

int used[maxn];
bool cycle;
void dfs(int v, int p)
{
    used[v] = 1;
    for (int u : adj[v])
    {
        if (used[u] && u != p)
            cycle = true;
        if (!used[u])
            dfs(u, v);
    }
}
void solve()
{
    cin >> n >> m;
    if (n == 1)
    {
        cout << "YES" << endl;
        cout << 1 << endl;
        cout << 1 << endl;
        return;
    }
    for (int i = 1; i <= m; i ++)
    {
        int v, u;
        cin >> v >> u;
        adj[v].push_back(u);
        adj[u].push_back(v);
    }
    dfs(1, -1);
    if (cycle)
    {
        cout << "NO" << endl;
        return;
    }
    if (n > 20)
    {
        solve_chain();
        return;
    }

    int base_mask = (1 << n) - 1;

    for (int mask = 0; mask < (1 << n); mask ++)
        dp[mask] = -1;

    dp[base_mask] = 0;
    queue < int > q;
    q.push(base_mask);
    while(!q.empty())
    {

        int mask = q.front();
        q.pop();

        for (int i = 0; i < n; i ++)
        {
            int next_mask = transition_mask(mask, i + 1);
            if (dp[next_mask] == -1 && (mask & (1 << (i))))
            {
                dp[next_mask] = dp[mask] + 1;
                from[next_mask] = i + 1;
                last[next_mask] = mask;
                q.push(next_mask);
            }
        }
    }

    if (dp[0] == -1)
    {
        cout << "NO" << endl;
        return;
    }

    vector < int > ord;
    int cur = 0;
    while(cur != base_mask)
    {
        ///cout << "step " << cur << " " << from[cur] << endl;
        ord.push_back(from[cur]);
        cur = last[cur];
    }

    reverse(ord.begin(), ord.end());
    cout << "YES" << endl;
    cout << ord.size() << endl;
    for (int cur : ord)
        cout << cur << " ";
    cout << endl;



}
int main()
{
    solve();
    return 0;
}
/**
8 7
1 2
2 3
1 4
4 5
1 6
6 7
6 8

10 9
1 2
1 3
1 4
2 5
2 6
3 7
3 8
4 9
4 10

*/
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 4440 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 0 ms 600 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 4444 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 4444 KB Output is correct
18 Correct 1 ms 4440 KB Output is correct
19 Correct 1 ms 4440 KB Output is correct
20 Correct 1 ms 4444 KB Output is correct
21 Correct 1 ms 4440 KB Output is correct
22 Correct 1 ms 4440 KB Output is correct
23 Correct 1 ms 4444 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 1 ms 4444 KB Output is correct
26 Correct 1 ms 4444 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 1 ms 4444 KB Output is correct
29 Correct 1 ms 4444 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Correct 1 ms 4444 KB Output is correct
33 Correct 1 ms 4444 KB Output is correct
34 Correct 1 ms 4444 KB Output is correct
35 Correct 1 ms 4444 KB Output is correct
36 Correct 1 ms 4444 KB Output is correct
37 Correct 1 ms 4444 KB Output is correct
38 Correct 1 ms 4700 KB Output is correct
39 Correct 1 ms 10844 KB Output is correct
40 Correct 2 ms 10844 KB Output is correct
41 Correct 2 ms 10588 KB Output is correct
42 Correct 1 ms 10844 KB Output is correct
43 Correct 2 ms 10588 KB Output is correct
44 Correct 1 ms 10588 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 8540 KB Output is correct
48 Correct 2 ms 10588 KB Output is correct
49 Correct 2 ms 8540 KB Output is correct
50 Correct 2 ms 10588 KB Output is correct
51 Correct 1 ms 10588 KB Output is correct
52 Correct 1 ms 8540 KB Output is correct
53 Correct 1 ms 8540 KB Output is correct
54 Correct 2 ms 10588 KB Output is correct
55 Correct 2 ms 14684 KB Output is correct
56 Correct 2 ms 14684 KB Output is correct
57 Correct 2 ms 14684 KB Output is correct
58 Correct 2 ms 14684 KB Output is correct
59 Correct 0 ms 348 KB Output is correct
60 Correct 0 ms 348 KB Output is correct
61 Correct 0 ms 348 KB Output is correct
62 Correct 0 ms 348 KB Output is correct
63 Correct 0 ms 600 KB Output is correct
64 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 4556 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 1 ms 4564 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 1 ms 348 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 1 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 4440 KB Output is correct
5 Correct 1 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 0 ms 600 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 4444 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 4444 KB Output is correct
14 Correct 1 ms 4444 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 4444 KB Output is correct
18 Correct 1 ms 4440 KB Output is correct
19 Correct 1 ms 4440 KB Output is correct
20 Correct 1 ms 4444 KB Output is correct
21 Correct 1 ms 4440 KB Output is correct
22 Correct 1 ms 4440 KB Output is correct
23 Correct 1 ms 4444 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 1 ms 4444 KB Output is correct
26 Correct 1 ms 4444 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 1 ms 4444 KB Output is correct
29 Correct 1 ms 4444 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Correct 1 ms 4444 KB Output is correct
33 Correct 1 ms 4444 KB Output is correct
34 Correct 1 ms 4444 KB Output is correct
35 Correct 1 ms 4444 KB Output is correct
36 Correct 1 ms 4444 KB Output is correct
37 Correct 1 ms 4444 KB Output is correct
38 Correct 1 ms 4700 KB Output is correct
39 Correct 1 ms 10844 KB Output is correct
40 Correct 2 ms 10844 KB Output is correct
41 Correct 2 ms 10588 KB Output is correct
42 Correct 1 ms 10844 KB Output is correct
43 Correct 2 ms 10588 KB Output is correct
44 Correct 1 ms 10588 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 8540 KB Output is correct
48 Correct 2 ms 10588 KB Output is correct
49 Correct 2 ms 8540 KB Output is correct
50 Correct 2 ms 10588 KB Output is correct
51 Correct 1 ms 10588 KB Output is correct
52 Correct 1 ms 8540 KB Output is correct
53 Correct 1 ms 8540 KB Output is correct
54 Correct 2 ms 10588 KB Output is correct
55 Correct 2 ms 14684 KB Output is correct
56 Correct 2 ms 14684 KB Output is correct
57 Correct 2 ms 14684 KB Output is correct
58 Correct 2 ms 14684 KB Output is correct
59 Correct 0 ms 348 KB Output is correct
60 Correct 0 ms 348 KB Output is correct
61 Correct 0 ms 348 KB Output is correct
62 Correct 0 ms 348 KB Output is correct
63 Correct 0 ms 600 KB Output is correct
64 Correct 0 ms 348 KB Output is correct
65 Correct 0 ms 344 KB Output is correct
66 Correct 1 ms 4444 KB Output is correct
67 Correct 1 ms 4444 KB Output is correct
68 Correct 1 ms 4444 KB Output is correct
69 Correct 1 ms 4444 KB Output is correct
70 Correct 1 ms 4444 KB Output is correct
71 Correct 0 ms 348 KB Output is correct
72 Correct 1 ms 4444 KB Output is correct
73 Correct 1 ms 4444 KB Output is correct
74 Correct 1 ms 4444 KB Output is correct
75 Correct 1 ms 4444 KB Output is correct
76 Correct 1 ms 4444 KB Output is correct
77 Correct 1 ms 4444 KB Output is correct
78 Correct 1 ms 4444 KB Output is correct
79 Incorrect 1 ms 348 KB Output isn't correct
80 Halted 0 ms 0 KB -