rubine

Time limit: 0.05s Memory limit: 4MB Input: rubine.in Output: rubine.out

Ali-Baba și cei NN hoţi ai săi au descoperit harta unei comori pe o insulă izolată. Se asimilează harta cu un caroiaj de L×CL \times C regiuni (LL linii şi CC coloane). În fiecare regiune se află un sipet fermecat, în care se găsesc rubine (00 sau mai multe), numărul de rubine din fiecare sipet fiind păstrat în elementul corespunzător al caroiajului.

Se stabileşte următorul plan de acţiune:

  • deplasarea hoţului se poate face dintr-o regiune într-o altă regiune vecină (o regiune are maxim 88 regiuni vecine);
  • fiecare hoţ pleacă dintr-o anumită regiune, de coordonate date, spre regiunea în care se află Ali-Baba (regiunea din colţul dreapta jos, de coordonate LL şi CC), pe drumul cel mai scurt (lungimea unui drum fiind egală cu numărul regiunilor parcurse);
  • la trecerea printr-o regiune hoţul pune într-un sac rubinele existente în sipetul existent acolo;
  • dacă există mai multe drumuri de lungime minimă, un hoţ îl va alege pe acela pe care parcurgându-l, reuşeşte să strângă cât mai multe rubine;
  • primul hoţ care se deplasează este cel cu numărul de ordine 11, urmează apoi cel cu numărul de ordine 22, 33, ş.a.m.d., iar în timpul deplasării unui hoţ, ceilalţi stau pe loc până ce acesta ajunge la Ali-Baba;
  • sipetul fiind fermecat, în locul rubinelor luate de hoţ, apar altele identice, apariţia petrecându-se înaintea plecării fiecărui hoţ din punctul lui de pornire spre Ali-Baba.

Fiecare hoţ a strâns în sacul său un număr de rubine, cunoscut doar de el şi ajunge cu sacul în regiunea lui Ali-Baba. La împărţirea rubinelor apare şi Sindbad Marinarul care vrea o parte din saci. Ali-Baba cunoscând anumite relaţii care există între perechi de hoţi din regiune va trebui să aleagă acele relaţii care să implice repartizarea unui număr minim de saci lui Sindbad.

Se ştie că alegerea unei perechi de hoţi (i,j)(i,j) implică repartizarea sacului hoţului jj din „cauza” lui ii în visteria lui Ali-Baba, însă din acest moment nu se mai poate folosi nici o pereche de forma (j,k)(j,k), hoţul jj fiind eliminat.

Cerință

Ajutaţi-l pe Ali-Baba să aleagă ordinea perechilor astfel încât sacii care rămân să fie într-un număr cât mai mic posibil, știind că aceștia-i revin lui Sindbad.

Date de intrare

Fișierul de intrare rubine.in, conţine:

  • Pe prima linie dimensiunile caroiajului: valorile lui LL și CC separate printr-un spațiu;
  • Pe următoarele LL linii se află câte CC valori separate prin spaţiu, reprezentând numărul de rubine din sipetul aflat în regiunea respectivă;
  • Pe următoarea linie urmează NN, numărul de hoţi;
  • Pe următoarele NN linii se află coordonatele regiunilor (valori separate printr-un spaţiu) în care se află inițial hoții, pe prima linie dintre acestea pentru hoțul unu, pe linia a doua pentru hoțul doi, etc;
  • Pe următoarele linii, până la sfârșitul fișierului se află perechile care reprezintă relațiile din problemă.

Date de ieșire

Ieșirea se va face în fișierul rubine.out în formatul următor:

  • Pe prima linie se află numărul TT de perechi folosite de Ali-Baba, respectându-se cerințele problemei;
  • Pe următoarele TT linii se află câte patru valori separate două câte două printr-un spaţiu: i nr1 j nr2i\ {nr}_1\ j\ {nr}_2, unde ii reprezintă prima valoare din pereche (hoțul cu numărul de ordine ii), nr1{nr}_1 reprezintă numărul de rubine adunate de hoțul ii, jj reprezintă al doilea hoț din pereche (hoțul cu numărul de ordine jj), nr2{nr}_2 reprezentând numărul de rubine strânse de hoțul jj;
  • Pe următoarea linie se află numerele de ordine ale hoților ai căror saci au rămas lui Sindbad, valori separate două câte două printr-un spaţiu;
  • Pe ultima linie se află suma rubinelor din sacii rămași lui Sindbad.

Restricții și precizări

  • 1L,C,N501 \le L,C,N \le 50
  • 0A[i][j]2000 \le A[i][j] \le 200
  • Întotdeauna există soluții, dacă există mai multe, se va alege una.
  • În fiecare regiune, indiferent dacă este punctul de pornire al unui hoț sau regiunea în care se află Ali-Baba, există câte un sipet cu un anumit număr de rubine. Ali-Baba nu cunoaște numărul de rubine din fiecare sac.
  • Nu există doi hoți care se află inițial în aceeași regiune.

Exemplu

rubine.in

4 5
1 0 0 0 0
0 1 0 0 0
0 0 1 4 0
0 0 0 1 5
5
1 1
1 5
4 1
2 2
4 4
1 2
1 4
2 5
3 1
4 5

rubine.out

4
2 9 5 6
1 12 2 9
1 12 4 11
3 10 1 12
3
10

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