hdu 1226 BFS
2013-07-18 15:04
239 查看
一开始想着要写大数好麻烦啊。。。最后看了别人的代码瞬间觉得自己弱爆了。。。。。。值得以后学习。。。
AC代码如下:
AC代码如下:
#include <iostream> #include <queue> #include <cstdio> #include <cstring> #include <string> using namespace std; int number[16]; int visit[5100], flag; int N, C, M; string ans; typedef struct{ string now; int mod; }Node; void BFS(){ queue<Node> q; for( int i = 1; i < 16; i++ ){ if( number[i] ){ Node n; n.now = ""; if( i < 10 ){ n.now = i + '0'; }else{ n.now = i - 10 + 'A'; } n.mod = i % N; visit[i%N] = 1; q.push( n ); } } while( !q.empty() ){ Node n = q.front(); q.pop(); if( flag == 1 && ( n.now.size() > ans.size() ) ){ continue; } if( n.mod == 0 ){ if( flag == -1 ){ ans = n.now; flag = 1; }else{ if( n.now.size() < ans.size() ){ ans = n.now; }else if( n.now.size() == ans.size() && n.now < ans ){ ans = n.now; } } } for( int i = 0; i < 16; i++ ){ if( number[i] ){ Node temp = n; if( i < 10 ){ temp.now += i + '0'; }else{ temp.now += i + 'A' - 10; } temp.mod = ( temp.mod * C + i ) % N; if( ( temp.now.size() <= 500 && visit[temp.mod] == 0 ) || temp.mod == 0 ){ visit[temp.mod] = 1; q.push( temp ); } } } } } int main(){ int t; cin >> t; while( t-- ){ memset( number, 0, sizeof( number ) ); memset( visit, 0, sizeof( visit ) ); ans = ""; flag = -1; scanf( "%d%d%d", &N, &C, &M ); for( int i = 0; i < M; i++ ){ char temp[3]; scanf( "%s", temp ); if( temp[0] <= '9' && temp[0] >= '0' ){ number[temp[0]-'0'] = 1; }else{ number[temp[0]-'A'+10] = 1; } } if( N == 0 ){ if( number[0] ){ cout << "0" << endl; }else{ cout << "give me the bomb please" << endl; } continue; } BFS(); if( flag == -1 ){ puts("give me the bomb please"); }else{ cout << ans << endl; } } return 0; }
相关文章推荐
- HDU 1226 BFS
- hdu 1226 超级密码 bfs+大整数对long取模
- hdu 1226 超级密码bfs
- 一类数位限制倍数的BFS问题...URAL 1495,POJ 1465,HDU 4474,HDU 1226
- hdu 1226 超级密码 bfs
- HDU 1226(bfs,大数求余)
- hdu 1226 BFS + bfs记录路径
- BFS-hdu-1226-超级密码
- HDU 1226 超级密码(BFS)
- hdu 1226 超级密码 数位bfs(我称之为
- [HDU 1226]超级密码:BFS
- HDU 1226 超级密码(BFS)
- BFS-hdu-1226-超级密码
- hdu 1226 超级密码【BFS】
- Hdu-1226-超级密码 [bfs]
- HDU1226 BFS
- HDU 1226 BFS
- hdu 1226 BFS + bfs记录路径
- HDU1226 BFS
- hdu - 1226 超级密码 (bfs)