社区讨论
测试点 1~3 暴力求条。
P14260 期待(counting)参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhizz4c9
- 此快照首次捕获于
- 2025/11/03 18:28 4 个月前
- 此快照最后确认于
- 2025/11/03 18:28 4 个月前
测试点 暴力求条。
(菊花图的特殊性质是过了的)
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 条回复,欢迎继续交流。
正在加载回复...