Pagini recente » Diferente pentru problema/jb intre reviziile 20 si 10 | Diferente pentru problema/mts intre reviziile 6 si 7 | Diferente pentru problema/criza intre reviziile 1 si 2 | Diferente pentru problema/rotatii2 intre reviziile 6 si 4 | Diferente pentru problema/disconnect intre reviziile 10 si 9
Nu exista diferente intre titluri.
Diferente intre continut:
Fişierul de intrare $disconnect.in$ va conţine pe prima linie numerele $N$ şi $M$, semnificând numărul de noduri, respectiv numărul de operaţii care se vor efectua asupra arborelui. Următoarele $N - 1$ linii conţin câte o pereche de numere $X Y$, semnificând faptul că există o muchie neorientată între nodurile $X$ şi $Y$. Următoarele $M$ linii conţin câte trei numere $tip X Y$. Numărul $tip$ denotă tipul operaţiei, fiind egal cu $1$ dacă este vorba de o ştergere sau $2$ dacă e vorba de o întrebare. Numerele $X$ şi $Y$ vor fi folosite pentru a genera nodurile pe care se va aplica operaţia respectivă. Mai exact, aceste noduri vor fi $A = X xor V$ şi $B = X xor V$ unde $V$ este o variabila iniţial egală cu $0$. După fiecare operaţie de tip $2$ variabila $V$ îşi va schimba valoarea în funcţie de răspunsul afişat. Vă oferim un fragment de cod în $C++$ care generează şi rezolvă operaţiile.
==code(C) |
int V = 0;
int XOR = 0;
for (int i = 0; i < M; ++i) {
int type, x, y; cin >> type >> x >> y;
int a = x ^ V;
int b = y ^ V;
x ^= XOR;
y ^= XOR;
if (type == 1) {
T.removeEdge(a, b);
T.removeEdge(x, y);
} else
if (T.query(a, b)) {
if (T.query(x, y)) {
cout << "YES\n";
V = a;
XOR = x;
} else {
cout << "NO\n";
V = b;
XOR = y;
}
}
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.