Cod sursa(job #811528)

Utilizator NicuCJNicu B. NicuCJ Data 12 noiembrie 2012 16:08:33
Problema Cutii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
bool mat[3501][3502];
int vizitat[3501], x[3501], y[3501], z[3501];
int n, maxim, mmx, lungime;
void dfs(int pct)
{
	int i;
	if(vizitat[pct])
	{
		if(lungime+vizitat[pct]-1>maxim)
			maxim=lungime+vizitat[pct]-1;
		return;
	}
	if(!mat[pct][0])
	{
		//vizitat[pct]=1;
		if(lungime>maxim)
			maxim=lungime;
		return;
	}
	vizitat[pct]=1;
	for(i=1; i<=n; i++)
	{
		if(mat[pct][i])
		{
			lungime++;
			dfs(i);
			vizitat[pct]=maxim;
			lungime--;
		}
	}
}

int main()
{
	int i, t, k,  j;
	ifstream f("cutii.in");
	ofstream g("cutii.out");
	f>>n>>t;
	for(k=1; k<=t; k++)
	{
		maxim=0;
		for(i=1; i<=n; i++)
		{
			vizitat[i]=0;
			f>>x[i]>>y[i]>>z[i];
		}
		for(i=1; i<=n; i++)
		{
			mat[i][0]=0;
			for(j=1; j<=n; j++)
			{
				if(x[i]<x[j] && y[i]<y[j] && z[i]<z[j])
				{
					mat[i][j]=1;
					mat[i][0]++;
				}
				else mat[i][j]=0;
			}
		}
		lungime=1;
		for(i=1; i<=n; i++)
		{
			//if(!vizitat[i])
			//{
				dfs(i);
			//}
		}
		g<<maxim<<"\n";
	}
}