Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <conio.h>
- #include <string>
- #include <set>
- #include <map>
- #include <algorithm>
- #include <string>
- #include <math.h>
- #include <vector>
- #include <cmath>
- #include <sstream>
- #include <queue>
- using namespace std;
- struct teammade
- {
- int number;
- vector <int> like;
- };
- bool d(teammade p1, teammade p2)
- {
- if (p1.like.size() == p2.like.size())
- return p1.number > p2.number;
- else
- return p1.like.size() < p2.like.size();
- }
- set <int> answer;
- set <int> twiceteam;
- vector <teammade> graf;
- bool wheree = false;
- void thinking(vector <teammade> graf, int pos)
- {
- queue <int> Next;
- Next.push(graf[pos].number);
- while (!Next.empty())
- {
- int v = Next.front() - 1;
- Next.pop();
- for (int i = 0; i <= graf[v].like.size() - 1; i++)
- {
- if (twiceteam.find(graf[v].like[i]) == twiceteam.end() && answer.find(graf[v].like[i]) == answer.end())
- if (twiceteam.find(graf[v].number) != twiceteam.end())
- {
- answer.insert(graf[v].like[i]);
- Next.push(graf[v].like[i]);
- }
- else
- if (answer.find(graf[v].number) != answer.end())
- {
- twiceteam.insert(graf[v].like[i]);
- Next.push(graf[v].like[i]);
- }
- }
- if (wheree)
- wheree = false;
- else
- wheree = true;
- }
- }
- int main()
- {
- int n, prom;
- teammade partgraf;
- cin >> n;
- for (int i = 1; i <= n; i++)
- {
- partgraf.number = i;
- cin >> prom;
- while (prom != 0)
- {
- partgraf.like.push_back(prom);
- cin >> prom;
- }
- graf.push_back(partgraf);
- partgraf.like.clear();
- }
- for(int y=0;y<= graf.size() - 1;)
- {
- if (graf[y].like.size() != 0)
- if (answer.find(graf[y].number) == answer.end() && twiceteam.find(graf[y].number) == twiceteam.end())
- {
- if (wheree)
- {
- answer.insert(graf[y].number);
- wheree = false;
- }
- else
- {
- twiceteam.insert(graf[y].number);
- wheree = true;
- }
- thinking(graf, y);
- }
- else
- y++;
- else
- {
- cout << 0 << endl;
- _getch();
- return 0;
- }
- }
- cout << answer.size() << endl;
- for (auto i = answer.begin(); i != answer.end(); i++)
- {
- cout << *i << " ";
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment