<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_XI-a_lec%C8%9Bia_26</id>
	<title>Clasa a XI-a lecția 26 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_XI-a_lec%C8%9Bia_26"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_26&amp;action=history"/>
	<updated>2026-04-13T02:16:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_26&amp;diff=17570&amp;oldid=prev</id>
		<title>Bella: /* Algoritmul Roy Floyd */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_XI-a_lec%C8%9Bia_26&amp;diff=17570&amp;oldid=prev"/>
		<updated>2020-03-23T10:53:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Algoritmul Roy Floyd&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Algoritmul Roy Floyd ==&lt;br /&gt;
[https://infoarena.ro/problema/royfloyd Royfloyd]&lt;br /&gt;
&lt;br /&gt;
Se da un graf orientat cu &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; noduri, memorat prin matricea ponderilor. Sa se determine pentru orice pereche de noduri x si y lungimea minima a drumului de la nodul x la nodul y si sa se afiseze matricea drumurilor minime. Prin lungimea unui drum intelegem suma costurilor arcelor care-l alcatuiesc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/// doar distanta minima de la toate nodurile la toate&lt;br /&gt;
/// se afiseaza matricea drumurilor minime rezultate&lt;br /&gt;
/// complexitate n^3&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int n, a[105][105];&lt;br /&gt;
&lt;br /&gt;
void citire(){&lt;br /&gt;
  freopen(&amp;quot;royfloyd.in&amp;quot;,&amp;quot;r&amp;quot;,stdin);&lt;br /&gt;
  freopen(&amp;quot;royfloyd.out&amp;quot;,&amp;quot;w&amp;quot;,stdout);&lt;br /&gt;
&lt;br /&gt;
  int i, j;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n);&lt;br /&gt;
  for (i = 1; i &amp;lt;= n; i++)&lt;br /&gt;
    for (j = 1; j &amp;lt;= n; j++)&lt;br /&gt;
      scanf(&amp;quot;%d&amp;quot;,&amp;amp;a[i][j]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void roy_floyd(){&lt;br /&gt;
  int i, j, k;&lt;br /&gt;
  for ( k = 1; k &amp;lt;= n; k++ )&lt;br /&gt;
    for ( i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
      for ( j = 1; j &amp;lt;= n; j++ )&lt;br /&gt;
        if ( i != j &amp;amp;&amp;amp; a[i][k] &amp;amp;&amp;amp; a[k][j] &amp;amp;&amp;amp; ( a[i][j] &amp;gt; a[i][k] + a[k][j] || !a[i][j] ) )&lt;br /&gt;
          a[i][j] = a[i][k] + a[k][j];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afis(){&lt;br /&gt;
  int i, j;&lt;br /&gt;
  for ( i = 1; i &amp;lt;= n; i++ ) {&lt;br /&gt;
    for ( j = 1; j &amp;lt;= n; j++ ) &lt;br /&gt;
      printf( &amp;quot;%d &amp;quot;,a[i][j] );&lt;br /&gt;
    printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
  citire();&lt;br /&gt;
  roy_floyd();&lt;br /&gt;
  afis();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://infoarena.ro/problema/r Roy Floyd]&lt;br /&gt;
Aceeasi problema. Vom afisa suplimentar, pe langa matricea cu drumurile minime de la oricare doua noduri si o a doua matrice ce va retine cate strazi maxim pargurg pe drumurile minime.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;bits/stdc++.h&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
 &lt;br /&gt;
ifstream f(&amp;quot;rf.in&amp;quot;);&lt;br /&gt;
ofstream g(&amp;quot;rf.out&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
const int N = 1001;&lt;br /&gt;
int a[N][N], b[N][N];&lt;br /&gt;
int n;&lt;br /&gt;
 &lt;br /&gt;
void citire() {&lt;br /&gt;
  f &amp;gt;&amp;gt; n;&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
    for( int j = 1; j &amp;lt;= n; j++ ) {&lt;br /&gt;
      f &amp;gt;&amp;gt; a[i][j]; &lt;br /&gt;
      if( i != j ) &lt;br /&gt;
        b[i][j] = 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void roy() {&lt;br /&gt;
  for(int k=1; k&amp;lt;=n; k++)&lt;br /&gt;
    for(int i=1; i&amp;lt;=n; i++)&lt;br /&gt;
      for(int j=1; j&amp;lt;=n; j++)&lt;br /&gt;
        if((a[i][j] &amp;gt; a[i][k] + a[k][j]) or (a[i][j] == a[i][k] + a[k][j] and b[i][j] &amp;lt; b[i][k] + b[k][j])) {&lt;br /&gt;
          b[i][j] = b[i][k] + b[k][j];&lt;br /&gt;
          a[i][j] = a[i][k] + a[k][j];&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void afisare() {&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ ) {&lt;br /&gt;
    for(int j = 1; j &amp;lt;= n; j++ )&lt;br /&gt;
      g &amp;lt;&amp;lt; a[i][j] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
      g &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  for( int i = 1; i &amp;lt;= n; i++ ) {&lt;br /&gt;
    for( int j = 1; j &amp;lt;= n; j++ )&lt;br /&gt;
       g &amp;lt;&amp;lt; b[i][j] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
       g &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
int main() {&lt;br /&gt;
  citire();&lt;br /&gt;
  roy();&lt;br /&gt;
  afisare();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tema = &lt;br /&gt;
Pbinfo&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/1604/dmin dmin]&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/589/roy-floyd Roy-Floyd]&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/1652/rf rf]&lt;br /&gt;
&lt;br /&gt;
Infoarena&lt;br /&gt;
*[https://infoarena.ro/problema/royfloyd royfloyd]&lt;br /&gt;
*[https://infoarena.ro/problema/rfinv rfinv]&lt;br /&gt;
*[https://infoarena.ro/problema/coach coach]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>