Mai intai trebuie sa te autentifici.

Cod sursa(job #1917375)

Utilizator BenosuCusniriuc Beniamin Benosu Data 9 martie 2017 12:06:17
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
struct gogu
{
    int a,b;
}el,cap;
queue< pair<int,int> > paznici;
queue< pair<int,int> > cod;
int n , m[300][300],l=0;
int dr[4]={0,0,-1,1};
int dr1[4]={1,-1,0,0};
void lee()
{
    while(!cod.empty())
    {
        cap.a=cod.front().first;
        cap.b=cod.front().second;
        cod.pop();
        for(int k=0;k<4;k++)
        {
            el.a=cap.a+dr[k];
            el.b=cap.b+dr1[k];
            if(m[el.a][el.b]==-1 || m[el.a][el.b]>m[cap.a][cap.b]+1)
            {
                m[el.a][el.b]=m[cap.a][cap.b]+1;
                cod.push(make_pair(el.a,el.b));
            }
        }
    }
}
int main()
{
    ifstream f("muzeu.in");
    ofstream g("muzeu.out");
    f>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            char a;
            f>>a;
            if(a=='#')
                m[i][j]=-2;
            if(a=='.')
                m[i][j]=-1;
            if(a=='P')
            {
                m[i][j]=0;
                cod.push(make_pair(i,j));

            }
        }
    lee();
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            g<<m[i][j]<<' ';
        g<<"\n";
    }

    return 0;
}