This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
unsigned get_component_size(
vector<pair<unsigned, unsigned>> const &teleports, unsigned i,
vector<bool> &visited)
{
unsigned j = i;
unsigned component_size = 0;
do
{
component_size++;
visited[j] = 1;
j = upper_bound(teleports.begin(), teleports.end(),
make_pair(teleports[j].second, UINT_MAX)) -
teleports.begin();
} while (j != i && j < teleports.size());
return component_size;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
size_t n, m;
cin >> n >> m;
vector<pair<unsigned, unsigned>> teleports(2 * n);
for (size_t i = 0; i < n; i++)
{
unsigned a, b;
cin >> a >> b;
teleports[i] = {a, b};
teleports[n + i] = {b, a};
}
sort(teleports.begin(), teleports.end());
vector<bool> visited(2 * n, 0);
unsigned ans = get_component_size(teleports, 0, visited);
vector<unsigned> component_sizes;
for (size_t i = 0; i < 2 * n; i++)
{
if (!visited[i])
{
component_sizes.push_back(get_component_size(teleports, i, visited));
}
}
sort(component_sizes.begin(), component_sizes.end());
while (m--)
{
if (!component_sizes.empty())
{
ans += component_sizes.back() + 2;
component_sizes.pop_back();
}
else
{
ans++;
component_sizes.push_back(1);
}
}
cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |