Pagini recente » Cod sursa (job #2718343) | Cod sursa (job #2222432) | Cod sursa (job #2739062) | Cod sursa (job #2485130) | Cod sursa (job #811521)
Cod sursa(job #811521)
#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(!mat[pct][0])
{
vizitat[pct]=1;
if(lungime>maxim)
maxim=lungime;
return;
}
vizitat[pct]=1;
for(i=1; i<=n; i++)
{
if(!vizitat[i] && mat[pct][i])
{
lungime++;
dfs(i);
lungime--;
}
else if(vizitat[i])
{
if(mmx<vizitat[i])
mmx=vizitat[i];
}
}
if(mmx)
vizitat[pct]=mmx;
}
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";
}
}