首页 > 其他 > 详细

洛谷1602 Sramoc问题

时间:2017-10-06 10:09:44      阅读:301      评论:0      收藏:0      [点我收藏+]
 
刚看到这道题的时候感觉像spfa。
然后发现其实bfs就可以做了。
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1000+10;
int k,m,from[maxn],d[maxn];

int zz[maxn];
bool vis[maxn];
void bfs() {
	int s=1,t=0,x,y;
	for(int i=1;i<=k&&!vis[0];++i) if(!vis[i%m]){
		d[i%m]=i%m,zz[++t]=i%m,vis[i%m]=1;
	}
	while(s<=t&&!vis[0]) {
		x=zz[s++];y=x*10%m;
		for(int i=0;i<=k&&!vis[0];++i) {
			y=(x*10%m+i)%m;
			if(vis[y]) continue;
			vis[y]=1;
			from[y]=x;
			d[y]=i;
			zz[++t]=y;
		}
	}
	t=0;zz[++t]=d[0];
	for(int i=from[0];i;i=from[i]) zz[++t]=d[i];
	while(t) printf("%d",zz[t--]); 
}

int main() {
	scanf("%d%d",&k,&m);k--;
	bfs();
	return 0;
}

  

洛谷1602 Sramoc问题

原文:http://www.cnblogs.com/Serene-shixinyi/p/7630578.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!