I have the same problem, I am a python programer here is my code:
import sys
sys.setrecursionlimit(10**5) 
def find_tour(G):
    """
    Where G is an undirected graph
    """
    tour=[]
    visited_edges=set() 
    def recurse(u): 
        for v in G[u]:
            if (u,v) in visited_edges:continue
            visited_edges.add((u,v))
            recurse(v)
        tour.append(u) 
    recurse(G.keys()[0])
    tour.reverse()
    return tour 
from collections import defaultdict 
def main():
    G=defaultdict(list)
    n=input() 
    for t in range(n):
        l=map(int,raw_input().strip().split()) 
        for i in range(1,l[0]+1):
            G[l[i]].append(l[i+1])
    r=find_tour(G)
    if len(r) and r[0]==r[-1]:
        s=" ".join(map(str,r))
        s=str(len(r)-1)+" "+s
        print s
    else:print 0  
main() 
The error is in the reading phase, but when I change the read part to:
try:
        tokenizer=chain.from_iterable(line.strip().split() for line in stdinf)
        n=int(tokenizer.next())
        for i in range(n):
            m=int(tokenizer.next())
            u,v=-1,int(tokenizer.next())
            for j in range(m):
                u=v
                v=int(tokenizer.next())
                G[u].append(v)
    #    print G
    except:
        pass
I got an error in the 1st test case even when I dont have the same problem in my laptop.
Thanks for any help that you can give me.     
OK, I did it. You need to read input until end (C++ style!). In C# you can use structure like that:
while(Console.In.Peek() != -1)
{
     //read input
}
Good luck :)