PAT甲级1076 Forwards on Weibo (30 分)题解

本文详细介绍了使用广度优先搜索(BFS)算法遍历图的过程,重点讲解了如何从指定顶点开始,寻找距离该顶点不超过特定层级的所有顶点,并通过队列模拟实现BFS。同时,提供了完整的C++代码示例,展示了如何读取图结构并应用BFS算法。

在这里插入图片描述在这里插入图片描述
\quad这个一个标准的图BFS的过程,从图中给定的一个顶点u开始,记录与u距离(层数)不超过L的顶点个数,用队列模拟BFS即可。

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;

const int maxn = 1001;
vector<int> E[maxn];
int vis[maxn];
int BFS(int i, int L)
{
	int res = 0;
	queue<int> q;
	q.push(i);
	vis[i] = 1;
	q.push(-1);
	int layer = 0;
	while(!q.empty())
	{
		int u = q.front();
		q.pop();
		if(u==-1) break;
		res++;
		for (int i = 0; i < E[u].size(); ++i){
			int v = E[u][i];
			if(vis[v]==0){
				q.push(v);
				vis[v] = 1;
			}
		}
		if(q.front()==-1){
			if(layer==L) return res;
			layer++;
			q.pop();
			q.push(-1);
		}
	}
	return res;
}
int main(int argc, char const *argv[])
{
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int N, L; cin >> N >> L;
	for (int i = 1; i <= N; ++i){
		int num, temp; cin >> num;
		while(num--) cin >> temp, E[temp].push_back(i);
	}
    int K, temp; cin >> K;
    while(K--) 
    {
    	cin >> temp;
    	memset(vis, 0, sizeof(vis));
    	cout << BFS(temp, L)-1 << endl;  // 除去自身这个点,故要减1
    }
	return 0;
}
### CSS `animation-fill-mode` 属性中的 `forwards` 值 当定义动画时,`animation-fill-mode` 属性指定了目标元素在动画执行之前或之后应用哪些样式。对于 `forwards` 值而言,在动画完成后,被动画影响的属性会保留其最后的关键帧值(而不是恢复到初始状态)。这意味着即使动画结束,最终的状态仍然会被保持。 #### 使用示例 下面是一个简单的例子来展示如何使用带有 `forwards` 的 `animation-fill-mode`: ```css /* 定义关键帧 */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* 应用动画并设置 fill mode */ .fade-in-element { animation-name: fadeIn; animation-duration: 2s; animation-fill-mode: forwards; } ``` 在这个案例里,`.fade-in-element` 类下的 HTML 元素将会逐渐变得不透明,并且一旦动画完成,这些元素将继续维持完全可见的状态,而不会返回原来的不可见形式[^1]。 #### 实际应用场景 考虑一个按钮点击后显示提示框的情况。可以利用 `forwards` 来确保提示框在关闭前一直保持最新的视觉效果直到手动隐藏它为止。 ```html <button id="show-toast">Show Toast</button> <div class="toast hidden"></div> <style> .hidden { display:none;} .toast { /* 初始状态下隐藏 toast */ visibility:hidden; @keyframes slideInDown { from { transform: translateY(-100%); } to { transform: translateY(0); } } animation-name:slideInDown ; animation-duration:.5s; animation-fill-mode:forwards; /* 动画结束后不再隐藏 */ visibility:visible !important; } </style> <script> document.getElementById('show-toast').addEventListener('click', function() { document.querySelector('.toast').classList.remove('hidden'); }); </script> ``` 这段代码展示了通过移除 `.hidden` 类使提示框显现出来的同时启动下滑进入屏幕中心位置的效果;由于设置了 `forwards`, 提示框将在动画结束后停留在屏幕上直至进一步操作将其再次隐藏.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值