Cod sursa(job #1816351)

Utilizator PondorastiAlex Turcanu Pondorasti Data 26 noiembrie 2016 13:09:20
Problema Lista lui Andrei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=250,CMAX=66000;
char s[NMAX+5];
int n,v[NMAX+5][NMAX+5],nr=1,dx[]={0,1,0,-1},dy[]={1,0,-1,0};
struct Paznici {
    int st,dr;
}c[CMAX+5];
void Citire();
void Coada();
void Bordare();
void Afisare();
int main()
{
    Citire();
    Bordare();
    Coada();
    Afisare();
    return 0;
}
void Coada() {
    int u,p,x,y;
    p=1;
    u=nr-1;
    while(p<=u) {
        for(int i=0;i<=3;i++) {
            x=c[p].st+dx[i];
            y=c[p].dr+dy[i];
            if(v[x][y]==0) {
                u++;
                c[u].st=x;
                c[u].dr=y;
                v[x][y]=v[c[p].st][c[p].dr]+1;}}
        p++;}}
void Bordare() {
    for(int i=1;i<=n+1;i++) {
        v[0][i]=-1;
        v[i][0]=-1;
        v[n+1][i]=-1;
        v[i][n+1]=-1;}}
void Citire() {
    ifstream cin("muzeu.in");
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>s;
        for(int j=0;j<n;j++) {
           if(s[j]=='.')
            v[i][j+1]=0;
           else if(s[j]=='P') {
            c[nr].st=i;
            c[nr].dr=j+1;
            nr++;
            v[i][j+1]=1;}
           else if(s[j]=='#')
            v[i][j+1]=-1;}}}
void Afisare() {
    ofstream cout("muzeu.out");
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=n;j++) {
            cout<<v[i][j]-1<<" ";}
        cout<<"\n";}}