1118 Birds in Forest (25 分)

科学家拍摄了数千张森林中的鸟类照片,每张照片中的鸟被认为属于同一棵树。本研究旨在帮助科学家计算森林中可能的最大树木数量,并判断任意两只鸟是否位于同一棵树上。输入包括图片集和查询对,输出为最大树的数量、鸟的总数及查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1118 Birds in Forest (25 分)

Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in the same picture belong to the same tree. You are supposed to help the scientists to count the maximum number of trees in the forest, and for any pair of birds, tell if they are on the same tree.

Input Specification:

Each input file contains one test case. For each case, the first line contains a positive number N (≤10​4​​) which is the number of pictures. Then N lines follow, each describes a picture in the format:

K B​1​​ B​2​​ ... B​K​​

where K is the number of birds in this picture, and B​i​​'s are the indices of birds. It is guaranteed that the birds in all the pictures are numbered continuously from 1 to some number that is no more than 10​4​​.

After the pictures there is a positive number Q (≤10​4​​) which is the number of queries. Then Q lines follow, each contains the indices of two birds.

Output Specification:

For each test case, first output in a line the maximum possible number of trees and the number of birds. Then for each query, print in a line Yes if the two birds belong to the same tree, or No if not.

Sample Input:

4
3 10 1 2
2 3 4
4 1 5 7 8
3 9 6 4
2
10 5
3 7

Sample Output:

2 10
Yes
No
#include<iostream>
#include<vector>
#include<set>
int inf = 10005;
using namespace std;
vector<int> f(inf);
vector<int> book(10005,0);
int getf(int v){
	if(f[v] == v) return v;
	else{
		f[v] = getf(f[v]);
		return f[v];
	}
}
void merge(int x,int y){
	int t1 = getf(x);
	int t2 = getf(y);
	if(t1 != t2){
		f[t2] = t1;
	}
}
int main(){
	int n;
	cin >> n;
	set<int> s;
	for(int i = 0;i < inf;i++){
		f[i] = i;
	}
	while(n--){
		int k;
		cin >> k;
		vector<int> v(k);
		for(int i = 0;i < k;i++){
			cin >> v[i];
			book[v[i]] = 1;
			s.insert(v[i]);
		}
		for(int i = 1;i < k;i++){
			merge(v[0],v[i]);
		}
	}
	int k,cnt=0;
	cin >> k;
	for(int i = 0;i < inf;i++){
		f[i] = getf(f[i]);
		if(f[i] == i && book[f[i]]){
			cnt++;
		}
	}
	cout << cnt << " " << s.size() << endl;
	for(int i = 0;i < k;i++){
		int a,b;
		cin >> a >> b;
		int t1 = getf(a);
		int t2 = getf(b);
		if(t1 != t2){
			cout << "No" << endl;
		}else{
			cout << "Yes" << endl;
		}
	}
	return 0;
} 

 

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Poetry·Music·Gaming - Personal Webpage</title> <style> /* Global styles */ :root { --primary: #1a1a2e; --secondary: #0f3460; --accent: #e94560; --text: #f1f1f1; } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Lato', sans-serif; background: linear-gradient(135deg, var(--primary), #16213e); color: var(--text); line-height: 1.6; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; } section { background: rgba(10, 10, 20, 0.7); border-radius: 15px; padding: 30px; margin-bottom: 30px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); backdrop-filter: blur(10px); } h1, h2 { color: var(--accent); margin-bottom: 20px; text-shadow: 0 2px 4px rgba(0,0,0,0.5); } /* Poem section */ .poem { font-family: 'Playfair Display', serif; text-align: center; padding: 30px 0; } .poem-title { font-size: 2.5rem; margin-bottom: 10px; letter-spacing: 1px; } .poem-author { font-size: 1.2rem; opacity: 0.8; margin-bottom: 30px; font-style: italic; } .poem-content { font-size: 1.5rem; line-height: 2.2; letter-spacing: 0.5px; } .poem-line { margin: 15px 0; } /* MV player */ .player-container { position: relative; border-radius: 12px; overflow: hidden; margin: 30px 0; box-shadow: 0 10px 30px rgba(0,0,0,0.5); } .mv-frame { width: 100%; height: 500px; border: none; } /* Game intro section */ .game-info { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-top: 30px; } .game-text { padding: 20px; } .game-features { display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; margin: 20px 0; } .feature-card { background: rgba(233, 69, 96, 0.15); padding: 15px; border-radius: 8px; border-left: 3px solid var(--accent); } .screenshot { border-radius: 10px; overflow: hidden; box-shadow: 0 5px 15px rgba(0,0,0,0.4); display: flex; align-items: center; } .screenshot img { width: 100%; height: auto; display: block; } /* Responsive design */ @media (max-width: 768px) { .game-info { grid-template-columns: 1fr; } .mv-frame { height: 300px; } .poem-content { font-size: 1.3rem; } } </style> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&family=Playfair+Display:wght@700&display=swap" rel="stylesheet"> </head> <body> <div class="container"> <!-- Header --> <header> <h1>Poetry · Music · Gaming</h1> <p>Where Classical Poetry Meets Modern Esports</p> </header> <!-- Poem Section --> <section id="poem"> <h2>"Ascending the Heights" - Du Fu (Tang Dynasty)</h2> <div class="poem"> <div class="poem-title">Ascending the Heights</div> <div class="poem-author">By Du Fu (712-770 AD)</div> <div class="poem-content"> <div class="poem-line">The wind so swift, the sky so wide, apes wail and cry;</div> <div class="poem-line">Water so clear and beach so white, birds wheel and fly.</div> <div class="poem-line">The boundless forest sheds its leaves shower by shower;</div> <div class="poem-line">The endless river rolls its waves hour after hour.</div> <div class="poem-line">A thousand miles from home, I'm grieved at autumn's plight;</div> <div class="poem-line">Ill now and then for years, alone I'm on this height.</div> <div class="poem-line">Living in times so hard, at frosted hair I pine;</div> <div class="poem-line">Cast down by poverty, I have to give up wine.</div> </div> </div> <p style="text-align: center; margin-top: 20px; font-style: italic;">Translated by Xu Yuanchong</p> </section> <!-- Music MV Section --> <section id="music"> <h2>"Ticking Away" - Valorant Champions 2023 Theme</h2> <div class="player-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/CdZN8PI3MqM?si=iaAwrEvd_YR1UxGH" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </div> <div class="music-info"> <p><strong>Artist:</strong> Riot Games Music Team</p> <p><strong>Released:</strong> August 6, 2023</p> <p><strong>Event:</strong> Valorant Champions 2023 Grand Finals</p> <p><strong>Description:</strong> The official anthem for the 2023 Valorant Champions Tour, capturing the intensity and global spirit of the tournament.</p> </div> </section> <!-- Game Introduction Section --> <section id="game"> <h2>Valorant - Tactical Shooter Masterpiece</h2> <div class="game-info"> <div class="game-text"> <p>Valorant is a free-to-play tactical first-person shooter developed and published by Riot Games. Combining precise gunplay with unique character abilities, it has become a premier esports title since its 2020 release.</p> <div class="game-features"> <div class="feature-card"> <h3>Agent System</h3> <p>20+ unique Agents with special abilities</p> </div> <div class="feature-card"> <h3>Weapon Arsenal</h3> <p>17 weapons across 6 categories</p> </div> <div class="feature-card"> <h3>Competitive</h3> <p>Ranked mode with VCT global tournaments</p> </div> <div class="feature-card"> <h3>Map Design</h3> <p>7 tactically diverse maps</p> </div> </div> <h3>Core Gameplay</h3> <p>Matches are 25-round games where attackers try to plant a Spike while defenders attempt to stop them. The economy system forces strategic buying decisions each round. Valorant's 128-tick servers ensure precise hit registration where every millisecond counts[^1].</p> <h3>Esports Impact</h3> <p>Valorant Champions Tour (VCT) features international tournaments with millions in prizes. The 2023 Champions in Los Angeles set viewership records with over 1.4 million concurrent viewers[^2].</p> </div> <div class="screenshot"> <img src="https://images.contentstack.io/v3/assets/bltb6530b271fddd0b1/blt158572a7e9a2121e/62a0940b7fdb2a6d4f0dbb80/V_AGENTS_587x900_Brimstone.png" alt="Valorant Agent Brimstone"> </div> </div> </section> <!-- Footer --> <footer> <p>© 2023 Poetry · Music · Gaming | Fusion of Classical and Modern Culture</p> </footer> </div> </body> </html> 这是我的网页代码,现在我要让视频位置和尺寸合适,给出修改后的代码
最新发布
06-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值