Submission #71189316
Source Code Expand
#include <algorithm>
#include <array>
#include <bit>
#include <bitset>
#include <cctype>
#include <cmath>
#include <compare>
#include <cstdint>
#include <deque>
#include <functional>
#include <initializer_list>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <numbers>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <string_view>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
using llong = long long;
using ullong = unsigned long long;
using namespace std::literals;
template <typename T, typename = void> struct IsIterable : std::false_type {};
template <typename T>
struct IsIterable<T, std::void_t<typename std::decay_t<T>::iterator>>
: public std::true_type {};
template <typename T> inline constexpr bool IsIterableV = IsIterable<T>::value;
template <typename T, typename = void> struct IsReadable : std::false_type {};
template <typename T>
struct IsReadable<
T, std::void_t<decltype(std::declval<std::istream>() >> std::declval<T>())>>
: public std::true_type {};
template <typename T> inline constexpr bool IsReadableV = IsReadable<T>::value;
template <typename T, typename = void> struct IsWritable : std::false_type {};
template <typename T>
struct IsWritable<
T, std::void_t<decltype(std::declval<std::ostream>() << std::declval<T>())>>
: public std::true_type {};
template <typename T> inline constexpr bool IsWritableV = IsWritable<T>::value;
template <typename T, typename U = std::decay_t<T>>
struct IsIOManip
: std::disjunction<std::is_function<U>,
std::is_same<U, decltype(std::resetiosflags({}))>,
std::is_same<U, decltype(std::setiosflags({}))>,
std::is_same<U, decltype(std::setbase({}))>,
std::is_same<U, decltype(std::setfill(char{}))>,
std::is_same<U, decltype(std::setprecision({}))>,
std::is_same<U, decltype(std::setw({}))>> {};
template <typename T> inline constexpr bool IsIOManipV = IsIOManip<T>::value;
template <typename T, typename = void> struct IsTupleLike : std::false_type {};
template <typename T>
struct IsTupleLike<
T, std::void_t<decltype(std::tuple_size<std::decay_t<T>>::value)>>
: public std::true_type {};
template <typename T>
inline constexpr bool IsTupleLikeV = IsTupleLike<T>::value;
std::string separator = " ";
ullong column = 0;
ullong row = 0;
bool flushEnabled = false;
void setSeparator(std::string_view s) { separator = s; }
void setFlushEnabled(bool enabled) { flushEnabled = enabled; }
std::istream &read() { return std::cin; }
std::istream &readln(std::string &s) { return std::getline(std::cin, s); }
std::istream &read(std::ios_base &(*f)(std::ios_base &)) {
return std::cin >> f;
}
std::istream &read(std::ios &(*f)(std::ios &)) { return std::cin >> f; }
std::istream &read(std::istream &(*f)(std::istream &)) { return std::cin >> f; }
template <typename T, std::enable_if_t<IsReadableV<T &>> * = nullptr>
std::istream &read(T &t) {
return std::cin >> t;
}
template <typename T, size_t N = 0,
std::enable_if_t<IsTupleLikeV<T &> && !IsReadableV<T &>> * = nullptr>
std::istream &read(T &t);
template <typename T,
std::enable_if_t<IsIterableV<T &> && !IsReadableV<T &>> * = nullptr>
std::istream &read(T &t) {
for (auto &&t_i : t) {
read(t_i);
}
return std::cin;
}
template <typename T, size_t N,
std::enable_if_t<IsTupleLikeV<T &> && !IsReadableV<T &>> *>
std::istream &read(T &t) {
if constexpr (std::tuple_size_v<std::decay_t<T>> != N) {
read(std::get<N>(t));
return read<T &, N + 1>(t);
} else {
return std::cin;
}
}
template <typename T, typename... U> std::istream &read(T &t, U &...u) {
read(t);
return read(u...);
}
std::ostream &write() { return std::cout; }
std::ostream &writeln() {
++row;
column = 0;
if (flushEnabled) {
return std::cout.put('\n').flush();
} else {
return std::cout.put('\n');
}
}
std::ostream &write(std::ios_base &(*f)(std::ios_base &)) {
return std::cout << f;
}
std::ostream &write(std::ios &(*f)(std::ios &)) { return std::cout << f; }
std::ostream &write(std::ostream &(*f)(std::ostream &)) {
return std::cout << f;
}
template <typename T, std::enable_if_t<IsIOManipV<T &&>> * = nullptr>
std::ostream &write(T &&t) {
return std::cout << t;
}
template <typename T,
std::enable_if_t<IsWritableV<T &&> && !IsIOManipV<T &&>> * = nullptr>
std::ostream &write(T &&t) {
if (column > 0 && !separator.empty()) {
std::cout << separator;
}
++column;
return std::cout << t;
}
template <
typename T, size_t N = 0,
std::enable_if_t<IsTupleLikeV<T &&> && !IsWritableV<T &&>> * = nullptr>
std::ostream &write(T &&t);
template <typename T,
std::enable_if_t<IsIterableV<T &&> && !IsWritableV<T &&>> * = nullptr>
std::ostream &write(T &&t) {
ullong i = 0;
for (auto it = t.begin(); it != t.end(); ++it, ++i) {
if constexpr (IsIterableV<decltype(*it)> || IsTupleLikeV<decltype(*it)>) {
if (i > 0) {
writeln();
}
}
write(*it);
}
return std::cout;
}
template <typename T, size_t N,
std::enable_if_t<IsTupleLikeV<T &&> && !IsWritableV<T &&>> *>
std::ostream &write(T &&t) {
if constexpr (std::tuple_size_v<std::decay_t<T>> != N) {
write(std::get<N>(t));
return write<T &&, N + 1>(std::forward<T>(t));
} else {
return std::cout;
}
}
template <typename T, typename... U> std::ostream &write(T &&t, U &&...u) {
write(std::forward<T>(t));
return write(std::forward<U>(u)...);
}
template <typename... T> std::ostream &writeln(T &&...t) {
write(std::forward<T>(t)...);
return writeln();
}
std::vector<llong> visited;
std::vector<std::vector<llong>> edges;
void search(llong v) {
if (!visited[v]) {
visited[v] = true;
for (auto &&u : edges[v]) {
search(u);
}
}
}
void answer() {
llong N, M;
read(N, M);
edges.resize(N);
for (llong i = 0; i < M; i++) {
llong A_i, B_i;
read(A_i, B_i);
A_i--, B_i--;
edges[A_i].push_back(B_i);
edges[B_i].push_back(A_i);
}
visited.resize(N);
search(0);
llong result = true;
for (llong i = 0; i < N; i++) {
result = result && (visited[i] && edges[i].size() == 2);
}
writeln(result ? "Yes" : "No");
}
int main() {
std::cin.tie(nullptr);
std::ios_base::sync_with_stdio(false);
answer();
return 0;
}
Submission Info
| Submission Time |
|
| Task |
C - Cycle Graph? |
| User |
k0michi |
| Language |
C++ 20 (gcc 12.2) |
| Score |
300 |
| Code Size |
6844 Byte |
| Status |
AC |
| Exec Time |
83 ms |
| Memory |
21916 KiB |
Judge Result
| Set Name |
Sample |
All |
AfterContest |
| Score / Max Score |
0 / 0 |
300 / 300 |
0 / 0 |
| Status |
|
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt, sample_02.txt |
| All |
min.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, sample_01.txt, sample_02.txt |
| AfterContest |
after_contest_01.txt |
| Case Name |
Status |
Exec Time |
Memory |
| after_contest_01.txt |
AC |
1 ms |
3492 KiB |
| min.txt |
AC |
1 ms |
3564 KiB |
| random_01.txt |
AC |
69 ms |
21260 KiB |
| random_02.txt |
AC |
6 ms |
5180 KiB |
| random_03.txt |
AC |
83 ms |
21824 KiB |
| random_04.txt |
AC |
18 ms |
9100 KiB |
| random_05.txt |
AC |
67 ms |
20168 KiB |
| random_06.txt |
AC |
2 ms |
3924 KiB |
| random_07.txt |
AC |
70 ms |
21776 KiB |
| random_08.txt |
AC |
23 ms |
10700 KiB |
| random_09.txt |
AC |
69 ms |
21552 KiB |
| random_10.txt |
AC |
65 ms |
19976 KiB |
| random_11.txt |
AC |
65 ms |
21828 KiB |
| random_12.txt |
AC |
38 ms |
14584 KiB |
| random_13.txt |
AC |
62 ms |
17824 KiB |
| random_14.txt |
AC |
4 ms |
4356 KiB |
| random_15.txt |
AC |
72 ms |
21916 KiB |
| random_16.txt |
AC |
33 ms |
13640 KiB |
| random_17.txt |
AC |
4 ms |
9376 KiB |
| random_18.txt |
AC |
7 ms |
6184 KiB |
| random_19.txt |
AC |
16 ms |
9972 KiB |
| random_20.txt |
AC |
34 ms |
10932 KiB |
| random_21.txt |
AC |
63 ms |
16904 KiB |
| sample_01.txt |
AC |
1 ms |
3508 KiB |
| sample_02.txt |
AC |
1 ms |
3492 KiB |