В вашем коде несколько ошибок, я удалил их все и запустил код. Он отлично скомпилирован и правильно работает с предоставленными данными. Но есть некоторые проблемы как с вашим стилем реализации, так и с проблемой. Чтобы понять, что не так с вашим кодом (на самом деле, это не только ошибка вашего кода, проблема также неправильна), позвольте мне сначала объяснить, почему проблема неправильная:
Заявление : Given a directed graph, a source vertex ‘s’ and a destination vertex ‘d’, print the count of all paths from given ‘s’ to ‘d’.
Ввод : First line consists of T test cases. First line of every test case consists of V and E, denoting the vertices and edges. Second line of every test case consists of 2*E spaced integers denoting the edge between vertices. Third line of every test case consists of S and D.
Выход : Single line output, print the count of all paths from 's' to 'd'.
Сначала вроде нормально, но, видите ли, о цикле речи не идет. Если есть какой-либо цикл, тогда у этой проблемы может быть бесконечный ответ.
Теперь проверьте ввод:
1
4 6
0 1
0 2 // note this
0 3
2 0 // note this
2 1
1 3
2 3
В приведенных выше (обратите внимание на это) строках показаны два ребра, которые создают цикл . но ваш код все еще работает, почему? Потому что ваш код составляет check[source] = true
. Но что, если цикл не включает source
, но другие вершины ... тогда этот код приведет к переполнению стека, а иногда переполнение стека вызывает сигнал SIGSEGV (нарушение сегментации).
Эту проблему все же можно решить с помощью некоторых работать, но это будет решение неправильной проблемы с неправильными правилами и неправильным пониманием (это иногда случается при решении проблем и соревновательном программировании). Так что я этого не пробовал.
[PS]: соревновательное программирование или спортивное программирование - это совсем не плохо. на самом деле довольно эффективно изучать DS и AL go. но выбирайте лучшие сайты, такие как topcoder, codeforces, codechef, hackerrank, leetcode, atcoder, uva, lightoj, и список продолжается ... но те, что я отметил, на самом деле довольно хороши.