Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Timus 1106
- #include <iostream>
- #include <vector>
- #include <set>
- #include <cmath>
- #define all(a) a.begin(), a.end()
- #define rall(a) a.rbegin(), a.rend()
- // #define file_io
- // #define many_tasks
- #define int int32_t
- #define ll int64_t
- #define uint uint32_t
- #define ull uint64_t
- #define db double
- #define ld long double
- void ios() {
- std::ios_base::sync_with_stdio(false);
- std::cin.tie(nullptr);
- std::cout.tie(nullptr);
- }
- void dfs(std::vector<std::vector<int>> &g, std::vector<int> &color, int v) {
- if (color[v] == 0) color[v] = 1;
- for (auto &u : g[v]) {
- if (color[u] == 0) {
- color[u] = 3 - color[v];
- dfs(g, color, u);
- }
- }
- }
- //-----------------------------------------------------------------------------------------------//
- void solve() {
- int n;
- std::cin >> n;
- std::vector<std::vector<int>> g(n);
- for (int i = 0; i < n; ++i) {
- int a;
- while (std::cin >> a) {
- if (a == 0) break;
- g[i].push_back(a - 1);
- }
- }
- std::vector<int> res;
- std::vector<int> color(n, 0);
- for (int i = 0; i < n; ++i) {
- if (color[i] == 0) {
- dfs(g, color, i);
- }
- }
- for (int i = 0; i < n; ++i) {
- if (color[i] == 1) {
- res.push_back(i + 1);
- } else if (color[i] == 0) {
- std::cout << 0;
- return;
- }
- }
- std::cout << res.size() << '\n';
- for (auto &elem : res) {
- std::cout << elem << ' ';
- }
- }
- //-----------------------------------------------------------------------------------------------//
- int main() {
- #ifdef file_io
- freopen("C:\\file_io\\input.txt", "r", stdin);
- freopen("C:\\file_io\\output.txt", "w", stdout);
- #endif
- ios();
- #ifdef many_tasks
- size_t t;
- std::cin >> t;
- while (t-- > 0) {
- solve();
- }
- #else
- solve();
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement