饥饿的小易,最少翻译个数

#include<iostream>
#include<queue>
const long MOD=1000000007L;
using namespace std;
struct NodeType{
	long x;
	int num;
};
int bfs(long x0){
	NodeType e,e1;
	if(x0<1||x0>1000000006L) return -1;
	x0%=MOD;
	queue<NodeType>qu;
	e.x=x0;
	e.num=0;
	qu.push(e);
	while(!qu.empty()){
		e=qu.front();
		qu.pop();
		if(e.x==0) return e.num;
		if(e.num<=100000){
			long x1=(4*e.x+4)%MOD;
			e1.x=x1;
			e1.num=e.num+1;
			qu.push(e1);
			long x2=(8*e.x+7)%MOD;
			e1.x=x2;
			e1.num=e.num+1;
			qu.push(e1);
		}
	}
}
int main(){
	long x0;
	while(cin>>x0){
		cout<<bfs(x0)<<endl;
	}
} 
#include<bits/stdc++.h>
using namespace std;
#define MAXV 200001
int A[MAXV][MAXV];
int n,m,k;
int sno,eno;
int visited[MAXV];
struct NodeType{
	int vno;
	int length;
};
int bfs(int sno,int eno){
	if(sno==eno) return 0;
	NodeType e,e1;
	queue<NodeType>qu;
	e.vno=sno;e.length=0;
	qu.push(e);
	visited[e.vno]=1;
	while(!qu.empty()){
		e=qu.front();qu.pop();
		if(e.vno==eno) return e.length-1;
		for(int j=0;j<n;j++){
			if(A[e.vno][j]!=0){
				if(visited[j]==0){
					e1.vno=j;
					e1.length=e.length+1;
					qu.push(e1);
					visited[j]=1;
				}
			}
		}
	}
}
int main(){
	while(scanf("%d%d",&n,&m)==2){
		int a,b;
		memset(A,0,sizeof(A));
		memset(visited,0,sizeof(visited));
		for(int i=0;i<n;i++){
			cin>>a>>b;
			A[a][b]=1;
			A[b][a]=1;
		}
		cin>>k;
		for(int i=0;i<k;i++){
			cin>>sno>>eno;
			cout<<bfs(sno,eno)<<endl;
		}
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值