#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
struct r {
int a;
int b;
};
r order(int a, int b) {
r out;
if (a >= b) {
out.a = a;
out.b = b;
}
else {
out.a = b;
out.b = a;
}
return out;
}
bool comp(int a, int b) {
return a < b;
}
r ds[20001];
vector<int> v;
int main()
{
int st = 0, dr = 0;
int st1, dr1;
int k;
int a, b;
r crt;
cin >> k;
if (k > 0) {
cin >> crt.a >> crt.b;
ds[0] = crt;
dr = 1;
}
for (int i = 1; i < k; i++) {
cin >> crt.a >> crt.b;
st1 = dr;
dr1 = st1;
for (int j = st; j < dr; j++) {
if (ds[j].a == crt.a) {
a = crt.a;
b = ds[j].b + crt.b;
ds[dr1] = order(a, b);
dr1++;
}
if (ds[j].a == crt.b) {
a = crt.b;
b = ds[j].b + crt.a;
ds[dr1] = order(a, b);
dr1++;
}
if (ds[j].b == crt.a) {
a = crt.a;
b = ds[j].a + crt.b;
ds[dr1] = order(a, b);
dr1++;
}
if (ds[j].b == crt.b) {
a = crt.b;
b = ds[j].a + crt.a;
ds[dr1] = order(a, b);
dr1++;
}
}
st = st1;
dr = dr1;
}
for (int i = st; i < dr; i++) {
if (find(v.begin(), v.end(), ds[i].b) == v.end()) {
v.push_back(ds[i].b);
}
}
sort(v.begin(), v.end(), comp);
cout << v.size() << '\n';
for (int i = 0; i < v.size(); i++) {
cout << v[i] << '\n';
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |