#include<bits/stdc++.h>
#define mp make_pair
#define PII pair<int,int>
#define fi first
#define se second
using namespace std;
const int NMAX=1005;
const int LIMIT=1000005;
int n,m,len1,len2,dp[5][NMAX][NMAX];
char s[NMAX][NMAX];
bool viz[NMAX][NMAX];
PII Q1[LIMIT],Q2[LIMIT];
int dx[]={ -1 , 0 , 1 , 0 };
int dy[]={ 0 , 1 , 0 , -1 };
bool Interior(int x,int y)
{
if (x>=1 && x<=n && y>=1 && y<=m) return 1;
return 0;
}
void Go(int val)
{
int i,j,kx,ky;
PII aux;
while (len1)
{
len2=0;
for (j=1;j<=len1;j++)
{
aux=Q1[j];
for (i=0;i<4;i++)
{
kx=aux.fi+dx[i];
ky=aux.se+dy[i];
if (Interior(kx,ky) && !viz[kx][ky] && s[kx][ky]!='#')
{
viz[kx][ky]=1;
dp[val][kx][ky]=dp[val][aux.fi][aux.se];
if (s[kx][ky]=='.')
{
dp[val][kx][ky]++;
Q2[++len2]=mp(kx,ky);
}
else Q1[++len1]=mp(kx,ky);
}
}
}
//copiere
len1=len2;
for (j=1;j<=len2;j++) Q1[j]=Q2[j];
}
}
int main()
{
int i,j,k,sol,cnt;
cin.sync_with_stdio(false);
cin>>n>>m;
for (i=1;i<=n;i++)
cin>>(s[i]+1);
for (k=1;k<=3;k++)
{
len1=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
viz[i][j]=0;dp[k][i][j]=1<<20;
if (s[i][j]==('0'+k))
{
viz[i][j]=1;dp[k][i][j]=0;
len1++;Q1[len1]=mp(i,j);
}
}
Go(k);
}
sol=1<<20;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (s[i][j]!='#')
{
if (s[i][j]=='.') cnt=2;
else cnt=0;
// cout<<i<<" "<<j<<" "<<cnt<<" "<<(dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt)<<"\n";
sol=min(sol,dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt);
}
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
cout<<sol<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBQSUkgcGFpcjxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTk1BWD0xMDA1Owpjb25zdCBpbnQgTElNSVQ9MTAwMDAwNTsKCmludCBuLG0sbGVuMSxsZW4yLGRwWzVdW05NQVhdW05NQVhdOwpjaGFyIHNbTk1BWF1bTk1BWF07CmJvb2wgdml6W05NQVhdW05NQVhdOwpQSUkgUTFbTElNSVRdLFEyW0xJTUlUXTsKaW50IGR4W109eyAtMSAsIDAgLCAxICwgMCB9OwppbnQgZHlbXT17IDAgLCAxICwgMCAsIC0xIH07Cgpib29sIEludGVyaW9yKGludCB4LGludCB5KQp7CiAgICBpZiAoeD49MSAmJiB4PD1uICYmIHk+PTEgJiYgeTw9bSkgcmV0dXJuIDE7CiAgICByZXR1cm4gMDsKfQoKdm9pZCBHbyhpbnQgdmFsKQp7CiAgICBpbnQgaSxqLGt4LGt5OwogICAgUElJIGF1eDsKICAgIHdoaWxlIChsZW4xKQogICAgICAgIHsKICAgICAgICAgICAgbGVuMj0wOwogICAgICAgICAgICBmb3IgKGo9MTtqPD1sZW4xO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYXV4PVExW2pdOwogICAgICAgICAgICAgICAgZm9yIChpPTA7aTw0O2krKykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAga3g9YXV4LmZpK2R4W2ldOwogICAgICAgICAgICAgICAgICAgICAgIGt5PWF1eC5zZStkeVtpXTsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW50ZXJpb3Ioa3gsa3kpICYmICF2aXpba3hdW2t5XSAmJiBzW2t4XVtreV0hPScjJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXpba3hdW2t5XT0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwW3ZhbF1ba3hdW2t5XT1kcFt2YWxdW2F1eC5maV1bYXV4LnNlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1treF1ba3ldPT0nLicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwW3ZhbF1ba3hdW2t5XSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUTJbKytsZW4yXT1tcChreCxreSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFExWysrbGVuMV09bXAoa3gsa3kpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvL2NvcGllcmUKICAgICAgICAgICAgbGVuMT1sZW4yOwogICAgICAgICAgICBmb3IgKGo9MTtqPD1sZW4yO2orKykgUTFbal09UTJbal07CiAgICAgICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCBpLGosayxzb2wsY250OwoKICAgIGNpbi5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luPj5uPj5tOwogICAgZm9yIChpPTE7aTw9bjtpKyspCiAgICAgICAgY2luPj4oc1tpXSsxKTsKCiAgICBmb3IgKGs9MTtrPD0zO2srKykKICAgIHsKICAgICAgICBsZW4xPTA7CiAgICAgICAgZm9yIChpPTE7aTw9bjtpKyspCiAgICAgICAgICAgIGZvciAoaj0xO2o8PW07aisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZpeltpXVtqXT0wO2RwW2tdW2ldW2pdPTE8PDIwOwogICAgICAgICAgICAgICAgICAgIGlmIChzW2ldW2pdPT0oJzAnK2spKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXpbaV1bal09MTtkcFtrXVtpXVtqXT0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuMSsrO1ExW2xlbjFdPW1wKGksaik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICBHbyhrKTsKICAgIH0KICAgIHNvbD0xPDwyMDsKICAgIGZvciAoaT0xO2k8PW47aSsrKQogICAgICAgIGZvciAoaj0xO2o8PW07aisrKQogICAgICAgICAgICBpZiAoc1tpXVtqXSE9JyMnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChzW2ldW2pdPT0nLicpIGNudD0yOwogICAgICAgICAgICAgICAgICAgIGVsc2UgY250PTA7CiAgICAgICAgICAgICAgICAgICAvLyBjb3V0PDxpPDwiICI8PGo8PCIgIjw8Y250PDwiICI8PChkcFsxXVtpXVtqXStkcFsyXVtpXVtqXStkcFszXVtpXVtqXS1jbnQpPDwiXG4iOwogICAgICAgICAgICAgICAgICAgIHNvbD1taW4oc29sLGRwWzFdW2ldW2pdK2RwWzJdW2ldW2pdK2RwWzNdW2ldW2pdLWNudCk7CiAgICAgICAgICAgICAgICB9CiAgICBpZiAoc29sPT0oMTw8MjApKSB7Y291dDw8Ii0xXG4iO3JldHVybiAwO30KICAgIGNvdXQ8PHNvbDw8IlxuIjsKICAgIHJldHVybiAwOwp9
Main.java:1: error: illegal character: '#'
#include<bits/stdc++.h>
^
Main.java:1: error: class, interface, or enum expected
#include<bits/stdc++.h>
^
Main.java:2: error: illegal character: '#'
#define mp make_pair
^
Main.java:3: error: illegal character: '#'
#define PII pair<int,int>
^
Main.java:4: error: illegal character: '#'
#define fi first
^
Main.java:5: error: illegal character: '#'
#define se second
^
Main.java:8: error: class, interface, or enum expected
const int NMAX=1005;
^
Main.java:9: error: class, interface, or enum expected
const int LIMIT=1000005;
^
Main.java:11: error: class, interface, or enum expected
int n,m,len1,len2,dp[5][NMAX][NMAX];
^
Main.java:12: error: class, interface, or enum expected
char s[NMAX][NMAX];
^
Main.java:13: error: class, interface, or enum expected
bool viz[NMAX][NMAX];
^
Main.java:14: error: class, interface, or enum expected
PII Q1[LIMIT],Q2[LIMIT];
^
Main.java:15: error: class, interface, or enum expected
int dx[]={ -1 , 0 , 1 , 0 };
^
Main.java:16: error: class, interface, or enum expected
int dy[]={ 0 , 1 , 0 , -1 };
^
Main.java:18: error: class, interface, or enum expected
bool Interior(int x,int y)
^
Main.java:21: error: class, interface, or enum expected
return 0;
^
Main.java:22: error: class, interface, or enum expected
}
^
Main.java:27: error: class, interface, or enum expected
PII aux;
^
Main.java:28: error: class, interface, or enum expected
while (len1)
^
Main.java:31: error: class, interface, or enum expected
for (j=1;j<=len1;j++)
^
Main.java:31: error: class, interface, or enum expected
for (j=1;j<=len1;j++)
^
Main.java:31: error: class, interface, or enum expected
for (j=1;j<=len1;j++)
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:34: error: class, interface, or enum expected
for (i=0;i<4;i++)
^
Main.java:37: error: class, interface, or enum expected
ky=aux.se+dy[i];
^
Main.java:38: error: class, interface, or enum expected
if (Interior(kx,ky) && !viz[kx][ky] && s[kx][ky]!='#')
^
Main.java:41: error: class, interface, or enum expected
dp[val][kx][ky]=dp[val][aux.fi][aux.se];
^
Main.java:42: error: class, interface, or enum expected
if (s[kx][ky]=='.')
^
Main.java:45: error: class, interface, or enum expected
Q2[++len2]=mp(kx,ky);
^
Main.java:46: error: class, interface, or enum expected
}
^
Main.java:48: error: class, interface, or enum expected
}
^
Main.java:53: error: class, interface, or enum expected
for (j=1;j<=len2;j++) Q1[j]=Q2[j];
^
Main.java:53: error: class, interface, or enum expected
for (j=1;j<=len2;j++) Q1[j]=Q2[j];
^
Main.java:53: error: class, interface, or enum expected
for (j=1;j<=len2;j++) Q1[j]=Q2[j];
^
Main.java:54: error: class, interface, or enum expected
}
^
Main.java:61: error: class, interface, or enum expected
cin.sync_with_stdio(false);
^
Main.java:62: error: class, interface, or enum expected
cin>>n>>m;
^
Main.java:63: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:63: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:63: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:66: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:66: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:66: error: class, interface, or enum expected
for (k=1;k<=3;k++)
^
Main.java:69: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:69: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:69: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:70: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:70: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:72: error: class, interface, or enum expected
viz[i][j]=0;dp[k][i][j]=1<<20;
^
Main.java:73: error: class, interface, or enum expected
if (s[i][j]==('0'+k))
^
Main.java:75: error: class, interface, or enum expected
viz[i][j]=1;dp[k][i][j]=0;
^
Main.java:76: error: class, interface, or enum expected
len1++;Q1[len1]=mp(i,j);
^
Main.java:76: error: class, interface, or enum expected
len1++;Q1[len1]=mp(i,j);
^
Main.java:77: error: class, interface, or enum expected
}
^
Main.java:80: error: class, interface, or enum expected
}
^
Main.java:82: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:82: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:82: error: class, interface, or enum expected
for (i=1;i<=n;i++)
^
Main.java:83: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:83: error: class, interface, or enum expected
for (j=1;j<=m;j++)
^
Main.java:87: error: class, interface, or enum expected
else cnt=0;
^
Main.java:89: error: class, interface, or enum expected
sol=min(sol,dp[1][i][j]+dp[2][i][j]+dp[3][i][j]-cnt);
^
Main.java:90: error: class, interface, or enum expected
}
^
Main.java:91: error: class, interface, or enum expected
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
^
Main.java:91: error: class, interface, or enum expected
if (sol==(1<<20)) {cout<<"-1\n";return 0;}
^
Main.java:93: error: class, interface, or enum expected
return 0;
^
Main.java:94: error: class, interface, or enum expected
}
^
68 errors