================================= Grafs: Sistema fluvial (4 Punts) ================================= .. py:module:: rius .. figure:: concaAmazones.png :align: right :height: 400 Representarem un sistema fluvial, és a dir, un conjunt de rius més els seus afluents, com un graf dirigit de networkx (un :py:class:`~networkx.DiGraph`). En aquest graf, els nodes són els noms dels rius i una aresta indica que un riu és afluent d'un altre. La direcció de l'aresta va de l'afluent, que és més petit, al riu al qual desemboca, que és més gran, tal com es mostra al dibuix. Un riu que aporta les seves aigües, directa o indirectament, a les d'un altre se l'anomena **tributari**. Per exemple, els rius Jari, Juruena, i Arinos són tributaris de l'Amazones. .. figure:: rius.svg :align: center :height: 300 En el següent exemple, el graf `gr` representa una petita part del sitema fluvial dels rius Amazones i Orinoco, el que està dibuixat més amunt: .. literalinclude:: tests-confluencia.txt :language: python :end-before: --fi-creacio Funció confluencia ------------------ Al mòdul :py:mod:`rius` (fitxer :file:`rius.py`), implementeu-hi la funció següent: .. function:: confluencia(gr, n1, n2) :param gr: graf de NetworkX que representa un sistema fluvial. :param n1: nom d'un riu de `gr`. :param n2: nom d'un altre riu de `gr`. :return: Un enter que valdrà: 1 si el riu `n1` és afluent de `n2`; 2 si el riu `n1` és tributari de `n2` però no hi desemboca directament; 0 en qualsevol altre cas. Per exemple, si `gr` és el graf de més amunt, aquesta funció ha de respondre així: .. literalinclude:: tests-confluencia.txt :language: python :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu de més jocs de proves al fitxer :download:`tests-confluencia.txt`. Funció recorregut ----------------- Al mateix mòdul :py:mod:`rius` (fitxer :file:`rius.py`), implementeu-hi la funció següent: .. function:: recorregut(gr, nriu) :param gr: graf de NetworkX que representa un sistema fluvial. :param nriu: nom d'un riu. :return: Llista ordenada de noms de rius que cal seguir per arribar des de `nriu` fins al riu principal que desemboca al mar. O sigui, en aquesta llista cada riu és afluent del següent riu de la llista, i el darrer nom de la llista és el riu principal, que no és afluent de cap altre. Per exemple, si `gr` és el graf de més amunt, aquesta funció ha de respondre així: .. literalinclude:: tests-recorregut.txt :language: python :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu de més jocs de proves al fitxer :download:`tests-recorregut.txt`.