Cod sursa(job #227403)

Utilizator andreidragusAndrei Dragus andreidragus Data 4 decembrie 2008 15:30:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
int a[101][101];
int i;
int j;
int n;
int k;

int main()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	scanf("%d",&n);
	
	{
		i = 1;
		while( i <= n)
		{
			{
				j = 1;
				while( j <= n)
				{
					scanf("%d", & a[i][j]);
					 j++;
				}
			}
			
			 i++;
		}
	}
	
	
	{
		k = 1;
		while( k <= n)
		{
			{
				i = 1;
				while( i<=n)
				{
					if(a[i][k])
						{
							j = 1;
							while( j<=n)
							{
								if(i!=j)
									if(a[k][j])
										if((a[i][j] > a[i][k] + a[k][j]) || (!a[i][j]))
											a[i][j] = a[i][k] + a[k][j];
								 j++;
							}
						}
						
					 i++;
				}
			}
			
			 k++;
		}
	}
	
	{
		i = 1;
		while( i <= n)
		{
			{
				{
					j = 1;
					while( j <= n)
					{
						printf("%d ",a[i][j]);
						 j++;
					}
				}
				
				printf("\n");
				}
			 i++;
		}
	}

	return 0;
	}