Problem B
Protein
Nikolaj är kemist och försöker skapa ett protein med en viss form. Just nu har han ett protein som består av en kedja av aminosyror av längd $N$. Kedjan är en sträng $s$, där varje aminosyra är en bokstav. Bokstäverna som används är de $K$ första i alfabetet ($1 \leq K \leq 26$).
Nikolaj kan göra så att en aminosyra $s_ i$ reagerar med $s_{i+1}$ så att $s_{i+1}$ försvinner från kedjan. Men detta är bara möjligt för vissa par av bokstäver. Nikolaj har en $K \times K$-tabell $A$ med nollor och ettor som indikerar vilka par av bokstäver som kan reagera med varandra. Om $A_{xy} = 1$ så betyder det att bokstav nummer $x$ i alfabetet kan reagera med bokstav nummer $y$. Så om till exempel $A_{23} = 1$ och strängen är bccbca, så kan den första bokstaven reagera med den andra så att strängen blir bcbca. Därefter kan två till reaktioner ske så att strängen blir bba.
Nikolaj vill skapa ett protein som är så litet som möjligt lexikografiskt, genom att ta bort bokstäver från $s$ på det här sättet. Din uppgift är att hitta den lexikografiskt minsta strängen som är möjlig.
Indata
Den första raden innehåller två heltal $K$ och $N$ ($1 \leq K \leq 26$, $1 \leq N \leq 5 \cdot 10^5$).
Därefter följer $K$ rader med en sträng av längd $K$, matrisen $A_{ij}$.
På sista raden är strängen $s$.
Utdata
Skriv ut en sträng, den lexikografiskt minimala strängen som kan skapas genom att göra borttagningar som beskrivs i problemet.
Poängsättning
Din lösning kommer att testas på en mängd testfallsgrupper. För att få poäng för en grupp så måste du klara alla testfall i gruppen.
Grupp |
Poängvärde |
Gränser |
$1$ |
$15$ |
$N \leq 20$ |
$2$ |
$10$ |
$N \leq 300$, $K \leq 5$ |
$3$ |
$20$ |
$N \leq 500$ |
$4$ |
$10$ |
$N \leq 2000$ |
$5$ |
$25$ |
$N \leq 10^5$ |
$6$ |
$10$ |
$K \leq 2$ |
$7$ |
$10$ |
Inga ytterligare begränsningar |
Sample Input 1 | Sample Output 1 |
---|---|
3 7 010 001 100 abacaba |
aac |
Sample Input 2 | Sample Output 2 |
---|---|
3 5 010 001 100 bcacb |
bacb |