MakeBipartite

Time limit: 2s Memory limit: 512MB Input: makebipartite.in Output: makebipartite.out

Sile a învățat la ora de matematică definiția unui graf bipartit. Considerăm un graf neorientat GG format dintr-o mulțime de noduri VV și o mulțime de muchii EE. Spunem că GG este bipartit dacă și numai dacă există două submulțimi V1,V2VV^1, V^2 \subseteq V astfel încât:

  • V1V2=V^1 \cap V^2 = \varnothing;
  • V1V2=VV^1 \cup V^2 = V;
  • fiecare muchie din EE are o extremitate în V1V^1 și o extremitate în V2V^2.


Sile a dat peste un graf neorientat GG, cu nodurile VV și muchiile EE, format din NN noduri (V={1,2,,N}V = \{1, 2, \dots, N\}) și MM muchii (E=M|E| = M). El se întreabă acum pentru care noduri vVv \in V avem că graful GvG \setminus v obținut prin eliminarea nodului vv și a muchiilor incidente lui vv din GG este bipartit.

Voi va trebui să îl ajutați pe Sile să își rezolve problema pentru TT scenarii.

Protocol de interacțiune

Concurentul trebuie să implementeze următoarea funcție, care va fi apelată pentru TT scenarii independente:

void solve(int N, int M, int* X, int* Y, char* S);

NN reprezintă numărul de noduri ale grafului, MM numărul de muchii ale grafului. XX și YY sunt două șiruri de lungime MM ce codifică mulțimea de muchii a grafului: pentru fiecare 0i<M0 \leq i < M există o muchie între XiX_i și YiY_i. Concurentul trebuie să scrie răspunsul în șirul SS de lungime NN: pentru 0i<N0 \leq i < N vom avea că Si=S_i = 1 dacă graful G{i+1}G \setminus \{i+1\} este bipartit, și Si=S_i = 0 altfel. Valorile scrise în SS sunt caractere, nu numere.

Restricții

  • Nu vor exista muchii cu a=ba = b.
  • Nu vor exista muchii care să apară de mai multe ori în cadrul aceluiași scenariu.
  • Se consideră identice muchiile (a,b)(a, b) și (b,a)(b, a).

Subtask 1 (23 puncte)

  • 1T6001 \leq T \leq 600
  • 1N2 0001 \leq N \leq 2\ 000
  • 1M5 0001 \leq M \leq 5\ 000
  • Suma valorilor NN nu va depăși 20 00020\ 000.
  • Suma valorilor MM nu va depăși 20 00020\ 000.

Subtask 2 (32 puncte)

  • 1T20 0001 \leq T \leq 20\ 000
  • 1N100 0001 \leq N \leq 100\ 000
  • 1M250 0001 \leq M \leq 250\ 000
  • Suma valorilor NN nu va depăși 120 000120\ 000.
  • Suma valorilor MM nu va depăși 350 000350\ 000.
  • Se acordă punctaj complet oricărei surse care găsește răspunsul corect cel puțin pentru nodurile vVv \in V pentru care există maxim două muchii incidente în GG. Cu toate acestea, se cere ca valorile SiS_i să fie mereu 0 sau 1 pentru 0i<N0 \leq i < N.

Subtask 3 (22 puncte)

  • 1T20 0001 \leq T \leq 20\ 000
  • 1N100 0001 \leq N \leq 100\ 000
  • 1M250 0001 \leq M \leq 250\ 000
  • Suma valorilor NN nu va depăși 120 000120\ 000.
  • Suma valorilor MM nu va depăși 350 000350\ 000.

Subtask 4 (23 puncte)

  • 1T40 0001 \leq T \leq 40\ 000
  • 1N1 000 0001 \leq N \leq 1\ 000\ 000
  • 1M2 500 0001 \leq M \leq 2\ 500\ 000
  • Suma valorilor NN nu va depăși 1 000 0001\ 000\ 000.
  • Suma valorilor MM nu va depăși 2 500 0002\ 500\ 000.

Exemplu

Apelurile comisiei Efect
solve(4, 3, {1,1,2}, {2,3,3}, S) S=S = 1110
solve(6, 7, {1,1,2,2,4,4,5}, {2,3,3,4,5,6,6}, S) S=S = 000000

Explicație

Avem T=2T = 2 scenarii de rezolvat.

În primul scenariu graful GG este cel din imaginea de mai jos.

Observăm că nodurile 11, 22 și 33 sunt vecine două câte două, de unde deducem că graful GG nu este bipartit. Prin eliminarea oricăruia dintre nodurile 11, 22 sau 33, graful rezultat va fi bipartit. De exemplu, dacă am elimina nodul 22 (implicit și muchiile sale incidente 212 – 1 și 232 – 3), atunci graful rezultat G{2}G \setminus \{2\} va fi bipartit, deoarece se pot alege submulțimile V1={1,4}V^1 = \{1, 4\} și V2={3}V^2 = \{3\} respectând proprietățile din enunț (n.b. există și alte modalități de a alege mulțimile V1V^1, V2V^2). Eliminarea nodului 44 nu ar duce la un graf bipartit. Așadar, răspunsul pentru acest scenariu este 1110.

În al doilea scenariu graful GG este cel din imaginea de mai jos.

În acest caz, indiferent ce nod vVv \in V s-ar elimina din GG, graful rezultat G{v}G \setminus \{v\} nu ar fi bipartit. Așadar, răspunsul în acest caz este 000000.

Log in or sign up to be able to send submissions!