Mai intai trebuie sa te autentifici.
Cod sursa(job #1917375)
Utilizator | 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;
}