18 November 2015

uva 10377 ( graph)

#include<iostream>
#include<cstdio>
#include<map>
using namespace std ;

#define pf printf

int data[1001][1001] ;
char str[1001],ch ;
int r,c ,d;
int x , y;
map<int,char> mp ;


void travers()
{
    while(cin>>ch)
    {
        if(ch=='Q')
            break ;
        else if(ch=='R')
        {
            d-- ;
            if(d<0)
                d =3 ;
        }
        else if(ch=='L')
        {
            d++ ;
            if(d>3)
                d =0 ;
        }
        else if(ch=='F')
        {
            if(d==0)
            {
                if(x-1>=1 && data[x-1][y])
                {
                    x-- ;
                }
            }
            else if(d==2)
            {
                if(x+1<=r && data[x+1][y])
                    x++ ;
            }
            else if(d==1)
            {
                if(y-1>=1 && data[x][y-1])
                    y-- ;
            }
            else if(d==3)
            {
                if(y+1<=c && data[x][y+1])
                    y++ ;
            }
        }
    }

}

int main()
{
    int test ;
    cin>>test ;
    while(test--)
    {
        mp[0] = 'N' ;
        mp[1] = 'W' ;
        mp[2] = 'S' ;
        mp[3] = 'E' ;
        cin>>r>>c ;
        getchar() ;
        for(int i=1 ; i<=r ; i++)
        {
            gets(str) ;
            for(int j=0 ; j<c ; j++)
            {
                if(str[j]==' ')
                    data[i][j+1] = 1 ;
                else
                    data[i][j+1]=0;
            }
        }
        d =0 ;
        cin>>x>>y ;

        travers() ;
        pf("%d %d %c\n",x,y,mp[d]) ;
        if(test)
            pf("\n") ;
    }
}

No comments:

Post a Comment

UVA 10679 - I Love Strings!!