求助一本通1361
  • 板块题目总版
  • 楼主Cap1taL
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/25 19:16
  • 上次更新2023/11/4 09:02:48
查看原帖
求助一本通1361
467107
Cap1taL楼主2021/8/25 19:16

有几个点死活不过,求有么有大佬帮忙看下

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
struct node{
	int n1,n2,n3,n4;
};
queue<node> q;
int n,k,gz[3000],x,y,w,t[5],ans;;
bool num[10][10][10][10];
int main(){
	memset(gz,-1,sizeof(gz));
	cin>>n>>k;
	for(int i=1;i<=k;i++){
		cin>>x>>y;
		gz[x]=y;
	}
	for(int i=n;i;i/=10)	w++;
	for(int i=n,j=w;i;i/=10)	t[j--]=i%10;
	node p;
	p.n1=t[1];	p.n2=t[2];	p.n3=t[3];	p.n4=t[4];
	q.push(p);
	while(!q.empty()){
		node xx;
		xx=q.front();
		q.pop();
		if(num[xx.n1][xx.n2][xx.n3][xx.n4])	continue;
		num[xx.n1][xx.n2][xx.n3][xx.n4]=1;
		ans++;
		//cout<<xx.n1<<xx.n2<<xx.n3<<xx.n4<<endl;
		if(gz[xx.n1]!=-1){
			node l;
			l.n1=gz[xx.n1];
			l.n2=xx.n2;
			l.n3=xx.n3;
			l.n4=xx.n4;
			q.push(l);
		}
		if(gz[xx.n2]!=-1){
			node l;
			l.n1=xx.n1;
			l.n2=gz[xx.n2];
			l.n3=xx.n3;
			l.n4=xx.n4;
			q.push(l);
		}
		if(gz[xx.n3]!=-1){
			node l;
			l.n1=xx.n1;
			l.n2=xx.n2;
			l.n3=gz[xx.n3];
			l.n4=xx.n4;
			q.push(l);
		}
		if(gz[xx.n4]!=-1){
			node l;
			l.n1=xx.n1;
			l.n2=xx.n2;
			l.n3=xx.n3;
			l.n4=gz[xx.n4];
			q.push(l);
		}
	}
	cout<<ans;
	return 0;
}
2021/8/25 19:16
加载中...