Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <set>
- using namespace std;
- struct Node {
- vector<Node *> childs, parents;
- Node *maried;
- char sex;
- Node() : sex('?'), maried(nullptr) {}
- };
- vector<Node> nodes;
- int main() {
- int n, m;
- cin >> n >> m;
- nodes.resize(n);
- for (int i = 0; i < m; i++) {
- int t, a, b;
- cin >> t >> a >> b;
- a--;
- b--;
- if (t == 1 || t == 2 || t == 3) {
- nodes[b].childs.push_back(&nodes[a]);
- if (nodes[b].maried != nullptr) {
- nodes[b].maried->childs.push_back(&nodes[a]);
- nodes[a].parents.push_back(nodes[b].maried);
- }
- nodes[a].parents.push_back(&nodes[b]);
- if (nodes[b].sex == '?') {
- if (t == 1) {
- nodes[b].sex = 'f';
- if (nodes[b].maried != nullptr) {
- nodes[b].maried->sex = 'm';
- }
- } else if (t == 2) {
- nodes[b].sex = 'm';
- if (nodes[b].maried != nullptr) {
- nodes[b].maried->sex = 'f';
- }
- }
- }
- if (nodes[a].parents.size() > 1) {
- if (nodes[a].parents[0]->sex == 'm') {
- nodes[a].parents[1]->sex = 'f';
- } else if (nodes[a].parents[0]->sex == 'f') {
- nodes[a].parents[1]->sex = 'm';
- } else if (nodes[a].parents[1]->sex == 'm') {
- nodes[a].parents[0]->sex = 'f';
- } else if (nodes[a].parents[1]->sex == 'f') {
- nodes[a].parents[0]->sex = 'm';
- }
- }
- } else if (t == 4) {
- nodes[a].maried = &nodes[b];
- nodes[b].maried = &nodes[a];
- for (int j = 0; j < nodes[a].childs.size(); j++) {
- nodes[b].childs.push_back(nodes[a].childs[j]);
- }
- for (int j = 0; j < nodes[b].childs.size(); j++) {
- nodes[a].childs.push_back(nodes[b].childs[j]);
- }
- if (nodes[a].sex == 'm') {
- nodes[b].sex = 'f';
- } else if (nodes[a].sex == 'f') {
- nodes[b].sex = 'm';
- } else if (nodes[b].sex == 'm') {
- nodes[a].sex = 'f';
- } else if (nodes[b].sex == 'f') {
- nodes[a].sex = 'm';
- }
- }
- }
- for (int i = 0; i < nodes.size(); i++) {
- cout << nodes[i].sex << ' ' << (nodes[i].childs.size() > 0 ? '+' : '-') << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement