社区讨论

测试点 1~3 暴力求条。

P14260 期待(counting)参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhizz4c9
此快照首次捕获于
2025/11/03 18:28
4 个月前
此快照最后确认于
2025/11/03 18:28
4 个月前
查看原帖
测试点 131\sim3 暴力求条。 (菊花图的特殊性质是过了的)
CPP
#include<bits/stdc++.h>
#define int long long
//#define lc p<<1
//#define rc p<<1|1
//#define lowbit(x) x&-x
#define psp putchar(' ')
#define endl putchar('\n')
using namespace std;
const int N=1e6+5;
const int M=1e3+5;
int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
	return x*f;
}
void print(int x){
	if(x<0)putchar('-'),x=-x;
	if(x<10){putchar(x+'0');return;}
	print(x/10);
	putchar(x%10+'0');
}
void putstr(string s){
	for(char v:s)putchar(v);
}
int n,m,k;
int T;
vector<int>a[N];
int d[N];
int x,y;
int isjh=0;
int mx;
int da=0;
deque<int>q;
int last[N];
int ans=0;
int add(int x,int ed,int fa){
	q.push_back(x);
	last[x]=fa;
	if(x==ed)return 1;
	for(int i=0;i<a[x].size();i++){
		int y=a[x][i];
		if(y==fa)continue;
		if(add(y,ed,x))return 1;
		q.pop_back();
	}
	return 0;
}
void dfs(int now,int flag,int glaf,int fa){
	if(now==x)flag=1;
	if(q.front()==y)glaf=1;
	if(flag&&glaf)ans++;
	q.pop_front();
	for(int i=0;i<a[now].size();i++){
		int to=a[now][i];
		if(to==fa)continue;
		q.push_back(to);
		dfs(to,flag,glaf,now);
	}
}
signed main(){
	//ios::sync_with_stdio(0);
	T=read();
	while(T--){
		n=read(),x=read(),y=read();
		isjh=0;
		mx=0;
		for(int i=1;i<=n;i++)d[i]=0;
		for(int i=1;i<=n;i++)a[i].clear();
		for(int i=1;i<n;i++){
			int u=read(),v=read();
			a[u].push_back(v);
			a[v].push_back(u);
			d[u]++,d[v]++;
		}
		da=0;
		for(int i=1;i<=n;i++){
			if(d[i]>1)da++;
			mx=max(mx,d[i]);
		}
		if(da<=1)isjh=1;
		if(isjh){
			if(d[x]==mx||d[y]==mx){
				print(4*n-3);
			}
			else{
				print(5);
			}
			endl;
			continue;
		}
		else{
			ans=0;
			for(int u=1;u<=n;u++){
				for(int v=1;v<=n;v++){
					for(int i=1;i<=n;i++)last[i]=i;
					while(!q.empty())q.pop_back();
					add(u,v,u);
					dfs(v,0,0,last[v]);
				}
			}
			print(ans),endl;
		}
	}
}

回复

0 条回复,欢迎继续交流。

正在加载回复...