⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1438.cpp

📁 zju_acm部分代码!都是自己做 有些事基本题目!题目还可以
💻 CPP
字号:
#include <cstdio>
#include <memory>
#include <queue>
#include <iostream>
using namespace std;
char Asteroids[101][101][101];//
int as[101][101][101];
int N;

struct coordinate
{
	int column;
	int row;
	int slice;

	void operator = (coordinate p)
	{column = p.column;row = p.row; slice = p.slice;	}

	bool operator == (coordinate p)
	{	return column == p.column&& row == p.row && slice == p.slice;}
	
	coordinate operator + (coordinate p)
	{
		coordinate temp;
		temp.column = column + p.column;
		temp.row = row + p.row;
		temp.slice = slice + p.slice;
		return temp;
	}

};
coordinate first,last;



const coordinate xyz[8] ={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};

void read()
{
	int i,j;

	for( i = 0 ; i < N ; i++)
		for( j = 0 ; j < N; j++)
				scanf("%s",Asteroids[i][j]); //i slice; j : row ; k : column;

		    scanf("%d%d%d",&first.column,&first.row,&first.slice);
			scanf("%d%d%d",&last.column,&last.row,&last.slice);
			char waste2[5];
			cin>>waste2;
}

inline int valid(coordinate p)
{
	if(p.column >= 0 && p.row >= 0 && p.slice >=0 &&p.column < N && p.row <N && p.slice < N 
		&& as[p.slice][p.row][p.column] ==0&& (int)Asteroids[p.slice][p.row][p.column] =='O' )
			return true;
	return false;

}

void bfs()
{
	int i ;
	coordinate temp;
	queue<coordinate>p;
	p.push(first);
	while(!p.empty())
	{
		temp = p.front();
		coordinate temp1;
		p.pop();
		for( i = 0 ; i < 6 ; i++)
		{
			temp1 = temp + xyz[i];
			if(valid(temp1))
			{
				p.push(temp1);
				as[temp1.slice][temp1.row][temp1.column] = as[temp.slice][temp.row][temp.column] + 1; 
				if(temp1 == last)
					return ;
			}
		}
	}
}

int main()
{
	char waste[6];
	
	//freopen("1.txt","r",stdin);
	while(scanf("%s%d",waste,&N)!=EOF)
	{
		memset(as,0,sizeof(as));
		read();
		if( first == last)
			printf("%d 0\n",N);
		else 
		{
			bfs();
			if(as[last.slice][last.row][last.column] !=0 )
				printf("%d %d\n",N,as[last.slice][last.row][last.column] );
			else 
				printf("NO ROUTE\n");
		}
		
	}
	return 0 ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -