思路:构造图+bfs
告诉我们
L
i
L_i
Li到
R
i
R_i
Ri连续元素的区间和,可以转换成
L
i
−
1
L_i-1
Li−1到
R
i
R_i
Ri两点之间有条通路,那么问题转化成是否能找到一条通路从
0
0
0走到
n
n
n,
b
f
s
bfs
bfs一遍即可
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
typedef pair<int,int> PII;
const int N=1e6+10,mod=1e9+7;
int n,q,l,r;
vector<int>e[N];
bool vis[N];
int main(){
cin>>n>>q;
while(q--){
cin>>l>>r;
e[l-1].push_back(r);
}
vis[0]=1;
queue<int>q;
q.push(0);
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=0;i<e[x].size();i++){
int y=e[x][i];
if(vis[y]) continue;
vis[y]=1;
q.push(y);
}
}
if(vis[n]) {
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
return 0;
}