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;
}