Cod sursa(job #3277088)

Utilizator AbRobertAbabei Robert-Petronel AbRobert Data 15 februarie 2025 12:09:04
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda vs11_12_vine_oji_2025 Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;

ifstream fin("plicuri.in");
ofstream fout("plicuri.out");

pair<int, int> plicuri[505];
int n;
vector<int> L[505];
bitset<505> viz;

bool verificare(int i, int j)
{
	if (plicuri[i].first > plicuri[j].first &&
		plicuri[i].second > plicuri[j].second)
		return 1;
	if (plicuri[i].second > plicuri[j].first &&
		plicuri[i].first > plicuri[j].second)
		return 1;
	return 0;
}

int DFS(int k)
{
	int maxim = 0;
	viz[k] = 1;
	for (int e : L[k])
		if (!viz[e])
			maxim = max(maxim, DFS(e));
	return maxim + 1;
}

int main()
{
	int i, j, x, y;
	fin >> n;
	for (i = 1; i <= n; i++)
	{
		fin >> x >> y;
		plicuri[i] = { x, y };
	}
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++)
			if (verificare(i, j))
				L[i].push_back(j);
	x = 0;
	for (i = 1; i <= n; i++)
	{
		viz.reset();
		y = DFS(i);
		x = x < y ? y : x;
	}
	fout << x;
}