hdu 1252
来源:互联网 发布:windows高级选项菜单 编辑:程序博客网 时间:2024/06/02 07:01
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 50 + 5;int n;struct node{ int p1, p2, p3, step;} point;int go[maxn][maxn];int get_id(){ char ch; for(;;) { scanf("%c", &ch); if(ch >= 'a' && ch <= 'z') break; } return ch - 'a' + 1;}int vis[maxn][maxn][maxn];int check(node x){ if(x.p1 == x.p2 && x.p1 == x.p3) return true; return false;}int bfs(){ point.p1--; point.p2--; point.p3--; if(point.p1 == point.p2 && point.p1 == point.p3) return 0; memset(vis, 0, sizeof(vis)); vis[point.p1][point.p2][point.p3] = 1; point.step = 0; queue<node> q; q.push(point); while(!q.empty()) { node sq = q.front(); //printf("%d %d %d\n", sq.p1, sq.p2, sq.p3); q.pop(); sq.step++; node tq = sq; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) if(i != j && go[i][j]) { if(tq.p1 == i && !vis[j][tq.p2][tq.p3] && go[i][j] == go[tq.p2][tq.p3]) { tq.p1 = j; vis[tq.p1][tq.p2][tq.p3] = 1; if(check(tq)) return tq.step; q.push(tq); tq = sq; } if(tq.p2 == i && !vis[tq.p1][j][tq.p3] && go[i][j] == go[tq.p1][tq.p3]) { tq.p2 = j; vis[tq.p1][tq.p2][tq.p3] = 1; if(check(tq)) return tq.step; q.push(tq); tq = sq; } if(tq.p3 == i && !vis[tq.p1][tq.p2][j] && go[i][j] == go[tq.p1][tq.p2]) { tq.p3 = j; vis[tq.p1][tq.p2][tq.p3] = 1; if(check(tq)) return tq.step; q.push(tq); tq = sq; } } } } return -1;}void print(){ for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { printf("%d ", go[i][j]); } printf("\n"); }}int main(){ while(scanf("%d", &n) == 1 && n) { memset(go, 0, sizeof(go)); scanf("%d%d%d", &point.p1, &point.p2, &point.p3); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) { int id = get_id(); go[i][j] = id; } //print(); int t = bfs(); if(t < 0) printf("impossible\n"); else printf("%d\n", t); } return 0;}
理解题意特别重要!!!!!!!!!!!!
题意大致是有p1, p2, p3三个东西,判断p1 -> a是否可行, 只要 p2 与 p3路径颜色与p1和a一样就行,接下来机械式的bfs就行
上代码
阅读全文
0 0
- hdu 1252
- hdu 1252
- hdu 1252
- HDU 1252 广搜
- hdu 1252 水搜索
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- 【java.lang.UnsupportedClassVersionError】版本不一致出错
- 自定义注解
- RocketMQ多master多SLAVE配置
- convert G:/fs:ntfs
- Java eclipse 项目svn忽略不需要提交的文件
- hdu 1252
- 关于静态代码块的执行顺序的笔记
- 向上向下转型的使用和自己的一个小补充。
- vue-router 快速入门
- 线性表的链式表示和实现
- 【威胁通告】netsarang公司软件中的nssock2.dll模块被植入恶意代码
- 约瑟夫环
- idea、eclipse 启动maven项目异常-缺少xml文件或者properties文件
- leetcode 636. Exclusive Time of Functions