Cod sursa(job #592073)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 26 mai 2011 18:12:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.68 kb
#include<fstream.h>

using namespace std;

int main()
{
    //Fisiere
    ifstream fin("royfloyd.in");
    ofstream fout("royfloyd.out");
    
    //Initializare
    unsigned int n=0,m[101][101],j=0,i=0,k=0;
    
    for(i=0;i<101;i++)
    {
                      for(j=0;j<101;j++)
                      {
                                        m[i][j]=0;                  
                      }                  
    }
    
    //Citire
    fin>>n;
    
    for(i=0;i<n;i++)
    {
                    for(j=0;j<n;j++)
                    {
                                    fin>>m[i][j];                
                    }                
    }
    
    //Roy-Floyd
    for(k=0;k<n;k++)
    {
                    for(i=0;i<n;i++)
                    {
                                    for(j=0;j<n;j++)
                                    {
                                                    if((m[i][k]+m[k][j]<m[i][j] || m[i][j]==0) && i!=j && m[i][k]!=0 && m[k][j]!=0)
                                                    {
                                                                      m[i][j]=m[i][k]+m[k][j];                           
                                                    }                
                                    }                
                    }                
    }
    
    //Afisare
    for(i=0;i<n;i++)
    {
                    for(j=0;j<n;j++)
                    {
                                    fout<<m[i][j]<<' ';                
                    }                
                    fout<<'\n';
    }
    
    //Incheiere
    fin.close();
    fout.close();
    return 0;   
}