ZOJ 1136 Multiple(BFS)

来源:互联网 发布:淘宝网店铺装修实战 编辑:程序博客网 时间:2024/05/19 01:30


#include <iostream>#include <cstdio>#include <memory.h>#include <queue>#include <cstring>#include <string>#include <algorithm>using namespace std;const int maxn=5100;int n,m,a[12];bool vis[maxn];struct node{string num;int mod;node(string str="",int mmod=0):num(str),mod(mmod){}};string bfs(){memset(vis,0,sizeof(vis));queue<node>q;q.push(node("",0));while (q.size()){node t=q.front();q.pop();if(t.num!=""&&t.mod==0){return t.num;}for (int i=0;i<=10;++i){if(!a[i])continue;node temp=t;temp.num=temp.num+(char)('0'+i);temp.mod=(temp.mod*10+i)%n;if(!vis[temp.mod]&&temp.num!="0"){vis[temp.mod]=1;q.push(temp);}}}return "";}int main(){while (scanf("%d%d",&n,&m)==2){memset(a,0,sizeof(a));for (int i=0;i<m;++i){int t;scanf("%d",&t);a[t]=1;}string ans="0";if(n!=0)ans=bfs();if(ans!=""){printf("%s\n",ans.c_str());}else{printf("0\n");}}return 0;}