https://www.acmicpc.net/problem/1931
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <set>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
pair <int, int> p;
vector<pair<int, int>> v;
cin >> N;
for (int i = 0;i < N;i++) {
cin >> p.first >> p.second;
v.push_back(p);
}
sort(v.begin(), v.end());
queue <pair <int, int>> q;
q.push(v[0]);
queue <int> id;
id.push(0);
int index = id.front();
int res = 0;
int now;
vector<int> save(N, 1);
while (!q.empty()) {
now = q.front().second;
q.pop();
index = id.front();
id.pop();
for (int i = 0;i < N;i++) {
if (now <= v[i].first && save[i] < (save[index]+1)) {
save[i] = save[index]++;
q.push(v[i]);
id.push(i);
if (save[i] > res) res = save[i];
}
}
}
cout << res;
return 0;
}