刚才 CF 的 C WA on #10 求调
  • 板块学术版
  • 楼主hihihi198
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/10/4 00:39
  • 上次更新2023/11/4 04:58:25
查看原帖
刚才 CF 的 C WA on #10 求调
311369
hihihi198楼主2021/10/4 00:39

RT,C 题调了老半天了,被罚时了 6 次,WA on #10。

#include<cctype>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
typedef long long ll;
using namespace std;
template<typename T>inline void read(T&x){
	register int c=getchar();x=0;bool f=0;
	for(;!isdigit(c);c=getchar())f^=!(c^45);
	for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
	if(f)x=-x;
}
template<typename T,typename... Args>inline void read(T&x,Args&...args){
	read(x);read(args...);
}
template<typename T>inline void write(T x){
	static int sta[35];register int top=0;
	if(x<0)x=-x,putchar('-');
	do{sta[top++]=x%10,x/=10;}while(x);
	while(top)putchar(sta[--top]+'0');
}
template<typename T>inline void write(T x,const char&c){
	write(x),putchar(c);
}
const int N=1e5+5;
int T,n,k;
ll a[N],s[N],sum;
bool flag;
vector<int>e[N];
void dfs(int u,int fa){
	s[u]=a[u];
	for(int v:e[u]){
		if(v==fa)continue;
		dfs(v,u);
		s[u]^=s[v];
	}
}
int main(){
	read(T);
	while(T--){
		read(n,k);flag=0;sum=0;
		for(int i=1;i<=n;i++){
			read(a[i]);sum^=a[i];e[i].clear();
		}
		for(int i=1,u,v;i<n;i++){
			read(u,v);
			e[u].push_back(v);
			e[v].push_back(u);
		}
		if(!sum){puts("YES");continue;}
		if(k<3){puts("NO");continue;}
		dfs(1,0);
		for(int i=2;i<=n;i++){
			if(s[i]==0||s[i]==sum){
				flag=1;
				break;
			}
		}
		puts(flag?"YES":"NO");
	}
	return 0;
}
2021/10/4 00:39
加载中...