Cod sursa(job #1953747)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 4 aprilie 2017 23:38:52
Problema Car Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb
//to be continued
#include <bits/stdc++.h>
#define INF 1e9+1
using namespace std;
ifstream f("car.in");
ofstream g("car.out");
int a[505][505];
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,-1,1,-1,0,1};
queue< pair<int,int> >q;
queue< pair<int,int> >qq;
void BFS()
{
    int i,j,iu,ju,k,ip,jp,cost;
    i=q.front().first;
    j=q.front().second;
    for(k=0;k<=7;k++)
    {
        iu=i+dx[k];
        ju=j+dy[k];
        if(a[iu][ju]==INF)
        {
            a[iu][ju]=0;
            q.push({iu,ju});
            qq.push({i,j});
        }
    }
    while(!q.empty())
    {
        i=q.front().first;
        j=q.front().second;
        ip=qq.front().first;
        jp=qq.front().second;
        q.pop();
        qq.pop();
        for(k=0;k<=7;k++)
        {
            iu=i+dx[k];
            ju=j+dy[k];
            if(ip==i)
            {
                if(iu==i)
                {
                    if(ju>j) cost=0;
                    else cost=4;
                }
                if(iu==i-1 or iu==i+1)
                {
                    if(ju==j) cost=2;
                    if(ju==j+1) cost=1;
                    if(ju==j-1) cost=3;
                }
            }
            if(ip==i-1)
            {

            }
            if(ip==i+1)
            {

            }
        }
    }
}
int main()
{int n,m,xi,yi,xf,yf,i,j;
f>>n>>m>>xi>>yi>>xf>>yf;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
        f>>a[i][j];
        if(a[i][j]) a[i][j]=-1;
        else a[i][j]=INF;
    }
q.push({xi,yi});
qq.push({0,0});
a[xi][yi]=0;
for(i=1;i<=n;i++)
a[i][0]=a[i][m+1]=INF;
for(i=1;i<=m;i++)
a[0][i]=a[n+1][i]=INF;
BFS();
if(a[xf][yf]==INF) g<<-1;
else
g<<a[xf][yf];

    return 0;
}