<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[undirected graph - print all path between src and dst]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich moechte alle pfade zwischen src and dst in einem undirekten graph ausgeben. ich habe versucht dfs zu adaptieren...leider noch mit einem bug, den ich nicht finden kann...kann mir jemand den algo erklaeren?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class Graph {
public:
    Graph(int n) : g(n), visit(n, false) {}

    void add(int from, int to) { 
        g[from].push_back(to); g[to].push_back(from); }

    void print_path() const {  
        for (int i=0; i&lt; path.size(); ++i) cout &lt;&lt; path[i] &lt;&lt; ' ';  
        cout &lt;&lt; endl; 
    }

    void traverse(int source, int dest) {
		fill(visit.begin(), visit.end(), false);
		DFS(source, dest); 
    }  

private:
    void DFS(int u, int dest) {
		if (u == dest) {
		    print_path();
		    return;
		}
		visit[u] = true;
		for (auto v : g[u] ) {
			path.push_back(v);

		    if (!visit[v])
		    	DFS(v, dest);

	        visit[u] = false;
	        path.pop_back();
	    }
    }
    vector&lt;vector&lt;int&gt; &gt; g;
    vector&lt;bool&gt; visit;
    vector&lt;int&gt; path;
};

int main() {
	// your code goes here

	Graph g(8);

	g.add(0, 7);
	g.add(0, 4);

	g.add(1, 2);
	g.add(1, 7);

	g.add(2, 7);	
	g.add(2, 1);
	g.add(2, 5);

	// no node with 3

	g.add(4, 0);
	g.add(4, 5);	
	g.add(4, 6);

	g.add(5, 4);
	g.add(5, 2);
	g.add(5, 6);	

	g.add(6, 4);	
	g.add(6, 5);

	g.add(7, 2);	
	g.add(7, 1);	
	g.add(7, 0);		

	g.traverse(0, 6);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322092/undirected-graph-print-all-path-between-src-and-dst</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 16:57:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322092.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Dec 2013 08:29:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Fri, 06 Dec 2013 08:29:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich moechte alle pfade zwischen src and dst in einem undirekten graph ausgeben. ich habe versucht dfs zu adaptieren...leider noch mit einem bug, den ich nicht finden kann...kann mir jemand den algo erklaeren?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class Graph {
public:
    Graph(int n) : g(n), visit(n, false) {}

    void add(int from, int to) { 
        g[from].push_back(to); g[to].push_back(from); }

    void print_path() const {  
        for (int i=0; i&lt; path.size(); ++i) cout &lt;&lt; path[i] &lt;&lt; ' ';  
        cout &lt;&lt; endl; 
    }

    void traverse(int source, int dest) {
		fill(visit.begin(), visit.end(), false);
		DFS(source, dest); 
    }  

private:
    void DFS(int u, int dest) {
		if (u == dest) {
		    print_path();
		    return;
		}
		visit[u] = true;
		for (auto v : g[u] ) {
			path.push_back(v);

		    if (!visit[v])
		    	DFS(v, dest);

	        visit[u] = false;
	        path.pop_back();
	    }
    }
    vector&lt;vector&lt;int&gt; &gt; g;
    vector&lt;bool&gt; visit;
    vector&lt;int&gt; path;
};

int main() {
	// your code goes here

	Graph g(8);

	g.add(0, 7);
	g.add(0, 4);

	g.add(1, 2);
	g.add(1, 7);

	g.add(2, 7);	
	g.add(2, 1);
	g.add(2, 5);

	// no node with 3

	g.add(4, 0);
	g.add(4, 5);	
	g.add(4, 6);

	g.add(5, 4);
	g.add(5, 2);
	g.add(5, 6);	

	g.add(6, 4);	
	g.add(6, 5);

	g.add(7, 2);	
	g.add(7, 1);	
	g.add(7, 0);		

	g.traverse(0, 6);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2370133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370133</guid><dc:creator><![CDATA[dergraf]]></dc:creator><pubDate>Fri, 06 Dec 2013 08:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Fri, 06 Dec 2013 09:21:31 GMT]]></title><description><![CDATA[<blockquote>
<p>ich moechte alle pfade zwischen src and dst in einem undirekten graph ausgeben</p>
</blockquote>
<p>Es gibt manchmal unendlich viele.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370148</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 06 Dec 2013 09:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Fri, 06 Dec 2013 16:56:53 GMT]]></title><description><![CDATA[<p>Wenn du eine loop hast dann ja! Wie kann ich dfs hin biegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370250</guid><dc:creator><![CDATA[algoman]]></dc:creator><pubDate>Fri, 06 Dec 2013 16:56:53 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Fri, 06 Dec 2013 18:17:54 GMT]]></title><description><![CDATA[<p>Es gibt immer dann unendlich viele, wenn der Graph mindestens eine Kante hat.<br />
A-B</p>
<p>Wege:<br />
A-B<br />
A-B-A-B<br />
A-B-A-B-A-B<br />
...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370264</guid><dc:creator><![CDATA[meinwissenistunendlich]]></dc:creator><pubDate>Fri, 06 Dec 2013 18:17:54 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Fri, 06 Dec 2013 20:38:22 GMT]]></title><description><![CDATA[<p>fuer denn fall habe ich ja ein visited array wo alle nodes true gesetzt sind die bisher besucht worden sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370292</guid><dc:creator><![CDATA[dergraf]]></dc:creator><pubDate>Fri, 06 Dec 2013 20:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Sat, 07 Dec 2013 09:07:14 GMT]]></title><description><![CDATA[<p>Ich spreche uebrigens von simple paths! Bitte um feedback zu meinem dfs algo!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370349</guid><dc:creator><![CDATA[dergraf]]></dc:creator><pubDate>Sat, 07 Dec 2013 09:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to undirected graph - print all path between src and dst on Sat, 07 Dec 2013 09:17:03 GMT]]></title><description><![CDATA[<p>Für mein Dafürhalten steht das &quot;visit[u] = false&quot; in der falschen Zeile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370350</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sat, 07 Dec 2013 09:17:03 GMT</pubDate></item></channel></rss>