訂正.  かっこわるい><

char t[1000][1000];d[1000][1000];a;i;f(i,j){--a&&(d[i-1][j]==a?t[--i][j]=36:d[i
+1][j]==a?t[++i][j]=36:d[i][j-1]==a?t[i][--j]=36:d[i][j+1]==a?t[i][++j]=36:0,f(i
,j));}main(j){for(;gets(t[i++]););for(;;a++)for(j=0;j<1e3;j++)for(i=0;i<1e3;i++)
if(a||t[i][j]==83)if(d[i][j]==a){!a||t[i][j]==32?d[i+1][j]||(d[i+1][j]+=a+1),d[i
-1][j]||(d[i-1][j]+=a+1),d[i][j+1]||(d[i][j+1]+=a+1),d[i][j-1]||(d[i][j-1]+=a+1
):(d[i][j]=0);if(t[i][j]==71)goto L;}L:f(i,j);for(i=0;*t[i];i++)puts(t[i]);}

6行だけど.