Pagini recente » Cod sursa (job #627471) | Cod sursa (job #3247723) | Cod sursa (job #3274273) | Cod sursa (job #1862239) | Cod sursa (job #3277088)
#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;
}