国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

UVA 10047 The Monocycle(BFS)

2019-11-08 18:29:40
字體:
來源:轉載
供稿:網(wǎng)友
題目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_PRoblem&problem=988

思路:BFS即可。

#include<cstdio>#include<queue>#include<cstring>#include<iostream>#include<algorithm>#define debuusing namespace std;const int maxn=30;const int dx[]= {-1,0,1,0};const int dy[]= {0,1,0,-1};struct Node{    int x,y,dir,col,t;    Node(int x=0,int y=0,int dir=0,int col=0,int t=0):x(x),y(y),dir(dir),col(col),t(t) {}};queue<Node> q;char st[maxn][maxn];int n,m,stx,sty,edx,edy;int vis[maxn][maxn][5][6];int isIn(int x,int y){    return x>=0&&x<n&&y>=0&&y<m;}int isGet(Node tmp){    return tmp.x==edx&&tmp.y==edy&&tmp.col==0;}void solve(int x,int y,int dir,int col,int t){    int ans,flag=0;    memset(vis,0,sizeof(vis));    while(!q.empty()) q.pop();    q.push(Node(x,y,dir,col,t)),vis[x][y][dir][col]=1;    while(!q.empty())    {        Node now=q.front();        q.pop();        if(isGet(now))        {            flag=1;            ans=now.t;            break;        }        {            Node nt;            nt.x=now.x+dx[now.dir];            nt.y=now.y+dy[now.dir];            nt.dir=now.dir,nt.col=(now.col+1)%5,nt.t=now.t+1;            if(isIn(nt.x,nt.y)&&(!vis[nt.x][nt.y][nt.dir][nt.col])&&st[nt.x][nt.y]!='#')            {                vis[nt.x][nt.y][nt.dir][nt.col]=1;                q.push(nt);            }        }        {            Node nt;            nt.x=now.x,nt.y=now.y,nt.t=now.t+1;            nt.dir=(now.dir+3)%4,nt.col=now.col;            if(!vis[nt.x][nt.y][nt.dir][nt.col])            {                vis[nt.x][nt.y][nt.dir][nt.col]=1;                q.push(nt);            }            nt.dir=(now.dir+1)%4;            if(!vis[nt.x][nt.y][nt.dir][nt.col])            {                vis[nt.x][nt.y][nt.dir][nt.col]=1;                q.push(nt);            }        }    }    if(flag) printf("minimum time = %d sec/n",ans);    else printf("destination not reachable/n");}int main(){#ifdef debug    freopen("in.in","r",stdin);#endif // debug    int t,cas=0;    while(scanf("%d%d",&n,&m)!=EOF&&(n||m))    {        cas++;        if(cas!=1) printf("/n");        printf("Case #%d/n",cas);        for(int i=0; i<n; i++)        {            getchar();            scanf("%s",st[i]);            for(int j=0; j<m; j++)            {                if(st[i][j]=='S') stx=i,sty=j;                else if(st[i][j]=='T') edx=i,edy=j;            }        }        solve(stx,sty,0,0,0);    }    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清苑县| 新平| 雷山县| 西丰县| 那坡县| 昭苏县| 衡山县| 霍山县| 大英县| 玉环县| 雷山县| 巴塘县| 马山县| 信丰县| 万州区| 荆州市| 宁晋县| 揭西县| 凤城市| 双柏县| 阿克陶县| 科尔| 抚宁县| 梅河口市| 化德县| 枝江市| 临高县| 璧山县| 堆龙德庆县| 县级市| 运城市| 巴里| 清水河县| 郸城县| 滦平县| 炉霍县| 玉田县| 玉屏| 竹北市| 泽普县| 蓝田县|