You are not logged in. Please login at www.codechef.com to post your questions!

×

PETERSEN - Editorial

6
1

Problem Link: contest, practice

Difficulty: Simple

Pre-requisites: DFS, BFS, Graph traversal

Problem:

Given a graph G, its vertices have been numbered from 0 to 9. Some letters have also been assigned to vertices of G, as can be seen from the following picture:

Given a string S. Your task is to determine whether there is a walk W which realizes a given string S in graph G, and if so, find the lexicographically least such walk.

Explanation:

Let's consider the picture from the statement carefully. The key observation is that there's no vertex V in G such that it's connected with two other vertices with the same letter written on them.

In other words, if we are looking for a way to continue the current walk from a vertex V and the next letter in S is C then two options are possible:

  1. V is not connected with vertices labled with C, so it's impossible to continue the current walk;
  2. V is connected with exactly one vertex U labled with C, so there's only one way to continue the current walk.

The next observation is that there are only two possible vertices to start our walk. After that observation we are ready to compose the whole solution:

  1. Choosing the starting vertex of the walk;
  2. Trying to complete the walk by moving to the corresponding vertices(if possible);
  3. Finding the lexicographically least valid walk. It's sufficient to compare paths only by their starting vertices.

There is an interesting fact that the only situation when there are two valid paths is when S consists of one symbol concatenated several times with itself. For example, there are two valid paths 3838 and 8383 for S = DDDD.

Complexity is O(N) per a testcase.

This question is marked "community wiki".

asked 24 Nov '14, 00:04

kostya_by's gravatar image

6★kostya_by ♦♦
166143235
accept rate: 0%

edited 29 Nov '18, 20:38

admin's gravatar image

0★admin ♦♦
19.8k350498541

The solutions can't be accessed.

(24 Nov '14, 00:15) sampritipanda5★

They will be uploaded soon.

(24 Nov '14, 00:16) kostya_by ♦♦6★

I replaced the picture with the one from problem statement, it seems to me, that origin URL is not reachable... If it was different picture, please fix the link.

(24 Nov '14, 13:54) betlista ♦♦3★

@vijju123 @admin I can't access setter's and tester's solution. Please fix the links.

(28 Nov '18, 18:50) the_extractor4★

My solution passed even though my code outputs "5050" for AAAA. Weak TCs?

Solution Link

link

answered 24 Nov '14, 00:35

wittyceaser's gravatar image

2★wittyceaser
3.4k194377
accept rate: 16%

edited 24 Nov '14, 00:46

I missed that "lexicographically least" part completely, but fortunately no problem...

(24 Nov '14, 05:52) betlista ♦♦3★

Submitted over 10 times, tried covering all corner cases, still couldn't resolve the NZEC error, any leads? Any test cases to fail the code?

http://ideone.com/0buFbJ (I put the code in ideone after the contest, hence not violating any rules)

link

answered 24 Nov '14, 00:24

djvdm123's gravatar image

3★djvdm123
734
accept rate: 0%

edited 24 Nov '14, 09:35

The NZEC might be due to stack overflow. Try a bottom-up approach without any recursion.

(24 Nov '14, 14:43) nisargshah953★

@nisargshah95: I tried AAAA....(5000 times) to check for stack overflow on ideone, runs perfectly fine, guess that's not it.

@kostya_by: any thoughts? Could you provide test cases used now that the contest is over?

(24 Nov '14, 23:33) djvdm1233★

I have a dp solution which is not getting submitted (WA). I've input many test cases and it is working fine for all of them.

Approach:

Since we know the letters, we just need to know whether it is taken from the inner or the outer ring.

Let 1: outer ring, 2: inner ring

dp1[i] = 2 tells that we are now at outer ring(1) and previous node was in the inner ring(2). Similar is the case of dp2[i].

So considering consecutive letters
if they are same, we are switching levels
dp2[i] = 1;
dp1[i] = 2;

if the modular difference between the two node is 1
we have moved in the outer ring
dp1[i] = 1;

if it is 2
we have moved in the inner ring
dp2[i] = 2;

dpX values are set only if previous nodes are reachable ie dpX[i-1] != -1
Later, the path is calculated by tracing back from dp1[n] and dp2[n] considering the letter at each position.

Order is checked only by the first node. Its giving correct answer for cases like "AAAA"(0505), "ABBECCD"(0169723), "D"(3), "AAB"(501), "AAAB"(0501).

What am I missing?

Code link: http://pastebin.com/RZhn0rmb

link

answered 24 Nov '14, 04:31

Shashwat.delhi's gravatar image

3★Shashwat.delhi
373
accept rate: 33%

pastebin.com, really? Why?

(24 Nov '14, 05:13) betlista ♦♦3★

I did not understand your approach with modular arithmetic thing, for example difference AA is 5, difference AD is 3...

Your submitted code returns for

2
AABD
AABE

only

-1

http://ideone.com/p3WaH5

(24 Nov '14, 05:35) betlista ♦♦3★

Hi during the testing I created list of basic test cases:

http://ideone.com/lyXFvH

Solution is @Shashwat.delhi's I just modified it such, that when line starts with '#' I print this line and continue with next - it's easier to navigate in test cases then...

link

answered 24 Nov '14, 05:45

betlista's gravatar image

3★betlista ♦♦
16.9k49115225
accept rate: 11%

edited 24 Nov '14, 13:38

Hi, I considered as two graphs one as outer and other as inner. There can by only one path after that we can determine after examining 1st three vertices in the string.Can someone please help me to find out where i am missing?

here is my solution link: http://www.codechef.com/viewsolution/5452717

link

answered 24 Nov '14, 12:06

legalroot's gravatar image

2★legalroot
212
accept rate: 0%

edited 24 Nov '14, 12:07

I have checked for all corner cases..My solution passed all test cases generated by betlista.. Could somebody help me where i am missing? Or provide the test cases used for evaluation?

(25 Nov '14, 11:53) legalroot2★

Please tell where does my code fails..... http://ideone.com/mBo1iD I have tried all corner cases.

link

answered 26 Nov '14, 03:08

rajat_euler's gravatar image

4★rajat_euler
111
accept rate: 0%

try:

1
CEA
(26 Nov '14, 03:40) betlista ♦♦3★

Hii everybody.. m getting RTE(sigabrt) plz give me a test case 4 dis.

link:http://ideone.com/fTs2JF

link

answered 28 Nov '14, 15:43

shubham_1286's gravatar image

2★shubham_1286
11
accept rate: 0%

Hi, I still can't access the tester and setter's solutions. Please help. On clicking the links, the following message is shown:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

link

answered 06 Jan '15, 19:51

esemzv's gravatar image

3★esemzv
212
accept rate: 0%

Access denied to setter and tester solution

link

answered 25 Mar '15, 20:46

ankurverma1994's gravatar image

4★ankurverma1994
415114
accept rate: 8%

-1

@djvdm123 First of all please mark your solutions secret or private on ideone from next time to avoid plagiarism

link

answered 24 Nov '14, 00:35

saumyajit_dey's gravatar image

2★saumyajit_dey
8529
accept rate: 0%

4

Well secret doesn't work (read the contest rules again) and if he made his solution private, he couldn't link it here...

LOGIC

(24 Nov '14, 00:38) xellos07★
3

The ideone snippet was created after the contest ended, so it shouldn't be a problem.

(24 Nov '14, 00:38) sampritipanda5★
toggle preview
Preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported
  • mathemetical formulas in Latex between $ symbol

Question tags:

×15,852
×1,191
×513
×374
×54
×36

question asked: 24 Nov '14, 00:04

question was seen: 5,802 times

last updated: 29 Nov '18, 20:38