POJ 1465 Multiple G++ bfs 没掌握
程序员文章站
2022-07-15 10:46:26
...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
//英语 看博友分析 抄博友程序 bfs 没掌握
int r,l;
struct nod{
int father;
int ans;
};
nod fa[5008];
int n,m;
int da[5008];
int flag[5008];//背
void print(int x)//背
{
if(x==0)
return;
print(fa[x].father);//背
cout<<fa[x].ans;//背
}
void bfs()
{
memset(fa,0,sizeof(fa));
memset(flag,0,sizeof(flag));
queue<int> que;
r=0;//背
l=1;//背
for(int i=0;i<m;i++)
{
if(da[i]!=0)
{
que.push(da[i]%n);//背
flag[da[i]%n]=1;//背
r++;
fa[r].father=0;
fa[r].ans=da[i];//背
}
}
while(que.empty()!=1)
{
int head=que.front();//背
que.pop();
if(head==0)
{
//cout<<l<<endl;
print(l);//背
cout<<endl;
return;
}
for(int i=0;i<m;i++)//背
{
int t=head;
t=(t*10+da[i])%n;//背
if(!flag[t])
{
flag[t]=1;
r++;//背 重要
fa[r].father=l;
fa[r].ans=da[i];//背
que.push(t);
}
}
l++;//背 重要
}
cout<<0<<endl;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<m;i++)
{
scanf("%d",&da[i]);
}
if(n==0)
{
cout<<0<<endl;
continue;
}
sort(da,da+m);
bfs();
}
return 0;
}
上一篇: Java实用方法整理(十七)——File类常用方法总结
下一篇: 隐藏多余的文字变为...
推荐阅读
-
POJ 3600 Subimage Recognition G++ dfs 巧妙 没掌握
-
POJ 1358 Housing Complexes G++ 二分图匹配 没掌握
-
POJ 1708 Game G++ 巧妙 bfs 没掌握
-
POJ 1476 Always On the Run G++ 动态规划dp 巧妙 没掌握
-
POJ 2096 Collecting Bugs G++ 概率dp 没掌握
-
POJ 1472 Instant Complexity G++ 递归 没掌握
-
POJ 1642 Stacking Cubes G++ 巧妙 没掌握
-
POJ 1394 Railroad G++ 例题 巧妙 没掌握
-
POJ 1719 Shooting Contest G++ 二分图匹配 没掌握
-
POJ 1857 To Europe! To Europe! G++ dp 没掌握