Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- using namespace std;
- ifstream fin ("rj.in");
- ofstream fout ("rj.out");
- int M[103][103],R[103][103],J[103][103];
- int di[]={-1,-1,0,1,1,1,0,-1};
- int dj[]={0,1,1,1,0,-1,-1,-1};
- int Vecini[15000][2];//0-x 1-y
- int st,dr,n,m,ri,rj,ji,jj;
- void dute_romeo(void)
- {
- st=dr=0;
- R[ri][rj]=1;
- Vecini[st][0]=ri;
- Vecini[st][1]=rj;
- int ic,jc,iv,jv,i;
- while (st<=dr)
- {
- ic=Vecini[st][0];
- jc=Vecini[st][1];
- for (i=0;i<8;i++)
- {
- iv=ic+di[i];
- jv=jc+dj[i];
- if (M[iv][jv]==0 && R[iv][jv]==0)
- {
- R[iv][jv]=R[ic][jc]+1;
- dr++;
- Vecini[dr][0]=iv;
- Vecini[dr][1]=jv;
- }
- }
- st++;
- }
- }
- void dute_fa(void)
- {
- st=dr=0;
- J[ji][jj]=1;
- Vecini[st][0]=ji;
- Vecini[st][1]=jj;
- int ic,jc,iv,jv,i;
- while (st<=dr)
- {
- ic=Vecini[st][0];
- jc=Vecini[st][1];
- for (i=0;i<8;i++)
- {
- iv=ic+di[i];
- jv=jc+dj[i];
- if (M[iv][jv]==0 && J[iv][jv]==0)
- {
- J[iv][jv]=J[ic][jc]+1;
- dr++;
- Vecini[dr][0]=iv;
- Vecini[dr][1]=jv;
- }
- }
- st++;
- }
- }
- void bordeaza (void)
- {
- int i,j;
- for (i=0;i<=n+1;i++)
- M[i][0]=M[i][m+1]=1;
- for (i=0;i<=m;i++)
- M[0][i]=M[n+1][i]=1;
- }
- int main()
- {
- int i,j;
- char x[102];
- fin>>n>>m;
- fin.getline(x,102);///citeste fin.eol din prima linie
- for (i=1;i<=n;i++)
- {
- fin.getline(x,102);
- for (j=0;j<m;j++)
- {
- if (x[j]=='X')
- M[i][j+1]=1;
- else
- if (x[j]=='J')
- {
- ji=i;
- jj=j+1;
- }
- else
- if (x[j]=='R')
- {
- ri=i;
- rj=j+1;
- }
- }
- }
- bordeaza();
- dute_romeo();
- dute_fa();
- for (i=1;i<=n;i++)
- for (j=1;j<=m;j++)
- if (R[i][j]==J[i][j] && R[i][j]!=0)
- cout<<i<<' '<<j<<' '<<R[i][j]<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement