Cod sursa(job #2312056)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 4 ianuarie 2019 07:14:50
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include<cstdio>
#define M 2000000
int d[100][100];
char n,i=-1,l,j,k,s[M],p,q,r;
int A()
{
  	int t=0;
  	if(s[i+1]=='\n')
  		i++;
  	for(i++;s[i]>='0';i++)
  		t=t*10+s[i]-48;
  	return t;
}
void S(int b,char c)
{
	char e[100];
	int j;
	if(!b)
		s[k++]=48;
	else
	{
		for(j=0;b;b/=10,j++)
			e[j]=b%10+48;
		for(j--;j>=0;j--)
			s[k++]=e[j];
	}
	s[k++]=c;
}
int main()
{
    freopen("royfloyd.in","r",stdin),freopen("royfloyd.out","w",stdout),fread(s,1,M,stdin),n=A();
    for(l=0;l<n;l++)
        for(j=0;j<n;j++)
            d[l][j]=A();
    for(p=0;p<n;p++)
        for(q=0;q<n;q++)
            for(r=0;r<n;r++)
                if(q!=r&&d[q][p]&&d[p][r]&&(!d[q][r]||d[q][r]>d[q][p]+d[p][r]))
                    d[q][r]=d[q][p]+d[p][r];
    for(k=i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            S(d[i][j],' ');
        s[k++]='\n';
    }
    fwrite(s,1,k,stdout);
}