题目:L2-031 深入虎穴 (25 分)

题目:题目详情 - L2-031 深入虎穴 (25 分) (pintia.cn)

大意

已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。

思路

1.首先需要定义一个容器 2.再计算他的根部

坑点:无 

步骤一

vector v[100100];//用于存储每个门能通向的门
int main()
{
	int N;
	cin>>N;
	int vis[100100];//用于判断是否是根结点//int dep[100100];//求每个结点的深度
	int n,x;
	for(int i=1;i<=N;i++)
	{
		cin>>n;
        if(n==0)
            continue;
		for(int j=0;j> x;
			vis[x]=1;
			v[i].push_back(x);//将可通向的道路压入该门的数组中
		}
	}
	int root;
	for(int i=1;i<=N;i++)//找到根结点 
	{	
		if(vis[i]==0)
		{
			root=i;
		}
	}

步骤二

	queue qq;
	qq.push(root);//dep[root] = 1;
	int tp;
	while(!qq.empty())
	{	//层次遍历求出每个点的深度
		tp = qq.front();
		qq.pop();
		for(int i=0;i

 全代码

#include
using namespace std;
vector v[100100];//用于存储每个门能通向的门
int main()
{
	int N;
	cin>>N;
	int vis[100100];//用于判断是否是根结点//int dep[100100];//求每个结点的深度
	int n,x;
	for(int i=1;i<=N;i++)
	{
		cin>>n;
        if(n==0)
            continue;
		for(int j=0;j> x;
			vis[x]=1;
			v[i].push_back(x);//将可通向的道路压入该门的数组中
		}
	}
	int root;
	for(int i=1;i<=N;i++)//找到根结点 
	{	
		if(vis[i]==0)
		{
			root=i;
		}
	}
	queue qq;
	qq.push(root);//dep[root] = 1;
	int tp;
	while(!qq.empty())
	{	//层次遍历求出每个点的深度
		tp = qq.front();
		qq.pop();
		for(int i=0;i

 

你可能感兴趣的:(c++)