답안 #929223

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
929223 2024-02-18T01:53:49 Z math_rabbit_1028 Newspapers (CEOI21_newspapers) C++14
8 / 100
1 ms 604 KB
#include <bits/stdc++.h>
using namespace std;

int N, M;
vector<int> adj[1010];
int dep[1010], par[1010], dia[1010];

void DFS(int v, int p=-1) {
	for (int i = 0; i < adj[v].size(); i++) {
		int u = adj[v][i];
		if (u == p) continue;
        par[u] = v;
		dep[u] = dep[v] + 1;
		DFS(u, v);
	}
}

int r = 0;
void chk(int v, int p=-1) {
    if (r >= 3) {
        cout << "NO\n";
        exit(0);
    }
    for (int i = 0; i < adj[v].size(); i++) {
        int u = adj[v][i];
        if (u == p) continue;
        if (dia[u]) continue;
        r++;
        chk(v, u);
        r--;
    }
}

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

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

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

    dep[1] = 0;
	DFS(1);
	int a = 0, b = 0;
	for (int i = 1; i <= N; i++) {
		if (dep[a] < dep[i]) a = i;
	}
	dep[a] = 0;
    par[a] = 0;
	DFS(a);
	for (int i = 1; i <= N; i++) {
		if (dep[b] < dep[i]) b = i;
	}

    // cout << a << " " << b << "\n";
    while (b > 0) {
        dia[b] = 1;
        b = par[b];
    }
    for (int i = 1; i <= N; i++) {
        if (dia[i]) chk(i);
    }
    
    cout << "YES\n";
    if (N == 1) cout << "1\n1\n";
    else if (N == 2) cout << "2\n1 1\n";
    else {
        cout << 2*N-4 << "\n";
        for (int i = 2; i <= N-1; i++) cout << i << " ";
        for (int i = N-1; i >= 2; i--) cout << i << " ";
        cout << "\n";   
    }

    return 0;
}

Compilation message

newspapers.cpp: In function 'void DFS(int, int)':
newspapers.cpp:9:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |  for (int i = 0; i < adj[v].size(); i++) {
      |                  ~~^~~~~~~~~~~~~~~
newspapers.cpp: In function 'void chk(int, int)':
newspapers.cpp:24:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |     for (int i = 0; i < adj[v].size(); i++) {
      |                     ~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Partially correct 1 ms 344 KB Failed to provide a successful strategy.
6 Incorrect 0 ms 348 KB Output isn't correct
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 484 KB Output is correct
10 Correct 0 ms 344 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 344 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 604 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 1 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Partially correct 1 ms 344 KB Failed to provide a successful strategy.
6 Incorrect 0 ms 348 KB Output isn't correct
7 Halted 0 ms 0 KB -