HDU 1252 Hike on a Graph 题目读懂就能做
来源:互联网 发布:rar64解压软件下载 编辑:程序博客网 时间:2024/06/06 17:50
题目:本人英语有障碍,没办法。。。。。。
有n个点,每两个点之间都有一条边链接,每一条边都有一个颜色,而且会有一个点自己到自己的边,问最短步数可以使得三个点走到一起,走一步的条件是:a,b,c三个点如果从a点到一个点i,那么a到i的这条路的颜色必须与b到c的那条路颜色相同。
想法:直接bfs,开一个结构体记录三个点的位置,和到达当前状态的步数,就非常简单。主要是读懂题。
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;char color[55][55];int n,a,b,c;struct node{ int a,b,c; int step;};int vis[55][55][55];void bfs(){ queue<node>q; while(!q.empty()) q.pop(); memset(vis,0,sizeof(vis)); node head,nxt; head.a=a;head.b=b;head.c=c;head.step=0; vis[a][b][c]=1; q.push(head); while(!q.empty()) { head=q.front(); q.pop(); if(head.a==head.b&&head.b==head.c) { printf("%d\n",head.step); return; } for(int i=1;i<=n;i++) { nxt=head; if(color[nxt.a][i]==color[nxt.b][nxt.c]) { nxt.step++; nxt.a=i; if(!vis[nxt.a][nxt.b][nxt.c]) { vis[nxt.a][nxt.b][nxt.c]=1; q.push(nxt); } } } for(int i=1;i<=n;i++) { nxt=head; if(color[nxt.b][i]==color[nxt.a][nxt.c]) { nxt.step++; nxt.b=i; if(!vis[nxt.a][nxt.b][nxt.c]) { vis[nxt.a][nxt.b][nxt.c]=1; q.push(nxt); } } } for(int i=1;i<=n;i++) { nxt=head; if(color[nxt.c][i]==color[nxt.a][nxt.b]) { nxt.step++; nxt.c=i; if(!vis[nxt.a][nxt.b][nxt.c]) { vis[nxt.a][nxt.b][nxt.c]=1; q.push(nxt); } } } } printf("impossible\n"); return;}int main(){ while(~scanf("%d",&n),n) { scanf("%d%d%d",&a,&b,&c); char s[2]; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%s",s); color[i][j]=s[0]; } } bfs(); } return 0;}
0 0
- HDU 1252 Hike on a Graph 题目读懂就能做
- HDU 1252 Hike on a Graph
- hdu 1252 Hike on a Graph(bfs)
- HDU 1252Hike on a Graph
- bfs hdu 1252 Hike on a Graph--easy
- [ZOJ1103] Hike on a graph
- HDU1252-Hike on a Graph
- Hike on a Graph--HDU1252
- HDU-1252 || ZOJ-1103 || POJ-2415 Hike on a Graph(bfs)
- POJ-2415 Hike on a Graph 搜索
- ZOJ 1103 Hike on a Graph(BFS)
- hdu1252 Hike on a Graph ----BFS
- BFS基础题 杭电2612 Find a way 1252 Hike on a Graph
- ZOJ 1103 Hike on a Graph(POJ 2415) (广搜)
- chapter05-Hike on a Graph(POJ 2415)
- POJ 2415 Hike on a Graph(bfs)
- ZOJ 1103 Hike on a Graph(bfs)
- HDU-5957 Query on a graph(线段树+树剖)
- 排序算法-冒泡排序
- java数据库操作
- selenium WebDriver之切换到链接打开的新浏览器窗口
- Handler消息机制详解
- java 接收邮件
- HDU 1252 Hike on a Graph 题目读懂就能做
- H2 数据库引擎
- 2016网易产品笔试(无答案)
- iOS数据存储--Core Data
- h2 数据文件解析
- SQLite3 API编程手册
- android在根布局组件设置背景不显示的问题解决
- 音频基础知识
- Java Scoket之java.io.EOFException解决方案