首页 > 其他分享 >Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees

Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees

时间:2023-06-24 21:45:24浏览次数:43  
标签:Copil int res 875 Codeforces fast st 编号 include

bfs解法

如果是暴力求解的话就每次都扫描一次所有边直到所有点都和树连接

优化:每次扫描我们可以发现会重复扫描那些已经存在树中的边了,因此我们可以只扫描还没有存在树中的边且是没扫过的边

对于每次更新,比如由点a已经在树中,更新点b,我们只需判断点a被更新到树中点的编号和a-b边的编号的大小,如果比它小的话则不变,否则加一

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
#include <utility>
#include <vector>
#include <queue>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N=2e5+10;
int t,n;
vector<PII> e[N];//记录下每个点所有相连的点以及边的编号大小 
queue<int> q;
int  fast[N],res[N];//fast记录每个点第一次被更新是由哪条边更新来的,并且记录下点的编号,res记录每个点需要几次更新 
bool st[N];
void solve(){
	cin>>n;
	memset(st,0,sizeof st);
	memset(fast,0,sizeof fast);
	for(int i=1;i<=n;i++) res[i]=1;
	for(int i=1;i<n;i++){
		int a,b;
		cin>>a>>b;
		e[a].push_back({b,i});
		e[b].push_back({a,i});
	}
	q.push(1);
	st[1]=1;
	while(q.size()){
		int k=q.front();
		q.pop();
		for(int i=0;i<e[k].size();i++){
			int x=e[k][i].x,y=e[k][i].y;
			if(st[x]) continue;//如果该点已经在树中了则停止 
			if(y>=fast[k]){
				res[x]=res[k];//如果该边的编号比更新k点的边的编号大则不变 
			}
			else res[x]=res[k]+1;//否则加一 
			fast[x]=y;
			q.push(x);
			st[x]=1;
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++){//求最大值 
		ans=max(ans,res[i]);
	}
	cout<<ans<<endl;
	for(int i=1;i<=n;i++) e[i].clear();
}
int main(){
	cin>>t;
	while(t--){
		solve();
	}
}

 

标签:Copil,int,res,875,Codeforces,fast,st,编号,include
From: https://www.cnblogs.com/liyiyang/p/17501727.html

相关文章

  • Codeforces Round #879 (Div. 2) A-E
    比赛链接A代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;boolsolve(){intn;cin>>n;intcnt=0;for(inti=1;i<=n;i++){intx;cin>>x;if(x==-1)cnt++;......
  • pycharm中的gihub copilot中报错Sign in failed. Reason: Request signInInitiate fai
    pycharm中的gihubcopilot中报错Signinfailed.Reason:RequestsignInInitiatefailedwithmessage:getaddri无法使用问题解决方法:idea打开我们的插件settings-plugins-找到插件,点击homepage插件主页跳出的页面下载对应pycharm的github copilot版本安装问题解决......
  • Codeforces Round 781 (Div. 2) E. MinimizOR (可持久化字典树)
    传送门题目大意:  T组测试数据每组测试数据先输入一个n表示有一个长度为n的一维数组,然后输入n个数字表示这个一维数组。紧接着输入一个k表示有k个询问,对于每个询问会输入一个l和一个r表示询问数组中[l,r]这个区间里面任意两个下标不重复的元素最小的或(|)是多少。解题思路: ......
  • nvim copilot.lua
    超简单配置AI加持的VIM,Nvim+Copilot_哔哩哔哩_bilibili》:Copilotauth   ......
  • Codeforces Round 881 (Div
    E.TrackingSegments给定初始长度为n,且全为0的序列a,然后给出m个线段,如果一个线段中1的个数严格大于0的个数,那么该线段称为一个漂亮线段,现在给出q次操作,每次操作使得序列a中位置x上的0变为1,请你求出第一次使得所有线段中出现漂亮线段的询问题解:二分答案容易发现答案具有单......
  • Codeforces 1603D. Artistic Partition
    题目链接:D-ArtisticPartition题目大意:要求将\([1,n]\)分成\(k\)段,使得每段对应的\(c(l,r)\)之和最小,其中\(c(l,r)=\sum_{i=l}^r\sum_{j=i}^r[\gcd(i,j)\gel]\)。首先注意到当\(r<2l\)时,\(c(l,r)=r-l+1\)。所以当\(2^k-1\gen\)时答案即为\(n\)。考虑\(\texttt......
  • 如何使用 GitHub Copilot:提示、技巧和用例
    生成式人工智能编码工具正在改变开发人员处理日常编码任务的方式。从记录我们的代码库到生成单元测试,这些工具有助于加快我们的工作流程。然而,就像任何新兴技术一样,总是有一个学习曲线。因此,当人工智能驱动的编码助手无法生成他们想要的输出时,开发人员(无论是初学者还是经验丰富的......
  • 如何在 Windows 11 中启用 Copilot
    这是一个快速教程,用于展示如何在Windows11中启用Copilot.在Windows的开发和金丝雀版本中,如果您没有以某种方式获得copilot,则可以激活/启用copilot。在这里,我将提到您必须执行的一些步骤,以便从侧边栏访问Windows11中的Copilot。但请记住,此处提到的方法仅适用于Windows11......
  • Codeforces Round 766 (Div. 2) 比赛报告
    0比赛经过比赛还没开始的时候就感觉状态不太好。果然。总归到底都是一个心态问题。A题经过看A题,结果半天看不懂,一开始没有注意到一定要在黑格子上操作。扔到DeepL上翻译了一下,再手玩一下样例就做出来了,速度有点慢。CF怎么这么喜欢出分讨题啊。看题目不能太急,要一个一......
  • Codeforces Round 881 (Div. 3)--F2
    F2.OmskMetro(hardversion)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;#defineendl"\n"#defineintlonglongconstintN=2e5+5;constintINF=0x3f3f3f3f;//假设一个区间的最大字段和为max最小字段和为min//那么[min,max]区间的......