#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define mod 1000000007
int n,m,ans;
int p[4000001],idx[4000001],vis[4000001];
vector <int> v[4000001];
vector <int> telp;
vector <int> qu;
void solve(int i,int cnt){
vis[i]=1;
if(v[i].size()==0) ans+=cnt-1;
for(int j:v[i]){
if(vis[j]==1) qu.push_back(cnt);
else solve(j,cnt+1);
}
return;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n>>m;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
telp.push_back(a);
telp.push_back(b);
p[a]=b;
p[b]=a;
}
sort(telp.begin(),telp.end());
for(int j=0;j<telp.size();j++) idx[telp[j]]=j+1;
v[0].push_back(idx[p[telp[0]]]);
for(int j=1;j<telp.size();j++){
//cout<<j<<" "<<idx[p[telp[j]]]<<endl;
v[j].push_back(idx[p[telp[j]]]);
}
for(int i=0;i<=n*2+1;i++){
if(vis[i]==0){
solve(i,1);
}
}
sort(qu.begin(),qu.end());
for(int i=qu.size()-1;i>=max(0,(int)qu.size()-m);i--){
ans+=qu[i]+2;
}
if(qu.size()<m){
m-=qu.size();
ans+=(m/2)*4;
if(m%2==1) ans++;
}
cout<<ans<<endl;
return 0;
}
//g++ -std=c++17 template.cpp -o executable.exe
# | 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... |