Submission #827361

#TimeUsernameProblemLanguageResultExecution timeMemory
827361BERNARB01Newspapers (CEOI21_newspapers)C++17
4 / 100
1 ms468 KiB
/** * author: BERNARD B.01 **/ #include <bits/stdc++.h> using namespace std; #ifdef B01 #include "deb.h" #else #define deb(...) #endif int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; if (m != n - 1) { cout << "NO" << '\n'; return 0; } vector<vector<int>> g(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; --u; --v; g[u].push_back(v); g[v].push_back(u); } int d = 0, to = 0; function<void(int, int, int)> Dfs = [&](int v, int pr, int dph) { if (dph >= d) { d = dph; to = v; } for (int u : g[v]) { if (u == pr) { continue; } Dfs(u, v, dph + 1); } }; Dfs(0, -1, 0); int a = to; Dfs(to, -1, 0); int b = to; vector<int> que; vector<int> dist(n, -1); function<bool(int, int, int)> Mark = [&](int v, int pr, int tar) { if (v == tar) { que.push_back(v); dist[v] = 0; return true; } for (int u : g[v]) { if (u == pr) { continue; } if (Mark(u, v, tar)) { que.push_back(v); dist[v] = 0; return true; } } return false; }; Mark(a, -1, b); for (int b = 0; b < (int) que.size(); b++) { for (int u : g[que[b]]) { if (dist[u] == -1) { dist[u] = dist[que[b]] + 1; que.push_back(u); } } } if (*max_element(dist.begin(), dist.end()) > 1) { cout << "NO" << '\n'; return 0; } cout << "YES" << '\n'; cout << 1 << '\n'; cout << 1 << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...