Pagini recente »
test_vectori
|
Istoria paginii runda/satevad
|
Test Cerc Nerdvana Clasa a 7-a
|
Istoria paginii runda/vaslui2022_cl_11_12/clasament
|
Cod sursă (job #664027)
Cod sursă (job
#664027)
#include <bits/stdc++.h>
const int NMAX = 3e3 + 5, mod = 1e9 + 7;
int n, cnt, x[NMAX], y[NMAX], z[NMAX], t[NMAX], f[NMAX], in[NMAX], d[NMAX];
std :: vector < int > A[NMAX];
bool Empty() {
for (int i = 1; i <= n; ++ i)
if (f[i] == false)
return false;
return true;
}
void DFS(int node) {
f[node] = true;
for (int i = 0; i < A[node].size(); ++ i) {
int u = A[node][i];
if (f[u] == false && d[node] > 0) {
d[node] --;
DFS(u);
}
}
return;
}
int main() {
std :: cin >> n;
for (int i = 1; i <= n; ++ i)
std :: cin >> x[i] >> y[i] >> z[i] >> t[i];
for (int i = 1; i <= n; ++ i)
for (int j = 1; j <= n; ++ j)
if (i != j && x[i] >= x[j] && y[i] >= y[j] && z[i] >= z[j] && t[i] >= t[j]) {
A[i].push_back(j);
in[j] ++;
}
for (int i = 1; i <= n; ++ i)
d[i] = 2;
while (!Empty()) {
int Min = n + 1, arg;
for (int i = 1; i <= n; ++ i)
if (f[i] == false && Min > in[i]) {
Min = in[i];
arg = i;
}
DFS(arg);
++ cnt;
}
std :: cout << cnt;
return 0;
}