题意:有一个人去市场上买东西,他要穿越整个市场。市场是一条直线,线上有N家店。一般这个人不会去买东西,但是会有一个限制条件,比如C1,D1;意思是,想要路过D1店,必须返回C1店买东西,然后再回来。。所以最短的路线就是,直接穿越整个市场的路程加上重复的区间 。
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct pp{
int first;
int second;
}pp;
pp num[600];
bool cmmp(pp x,pp y)
{
return x.first<y.first;
}
int main()
{
int n,m;
while(cin >> n >> m)
{
for(int i=0;i<m;i++)
cin >> num[i].first >> num[i].second;
sort(num,num+m,cmmp);
int ans = 0;
int L = -1,R = -1;
for(int i =0;i<m;i++)
{
if(R<num[i].first)
{
if(L!=-1||R!=-1)
ans+=2*(R-L);
L = num[i].first;
R = num[i].second;
}
else if(R<num[i].second) R = num[i].second;
}
//cout<<ans<<"///"<<endl;
ans+=2*(R-L);
ans+=n+1;
cout<<ans<<endl;
}
return 0;
}