关于刚才比赛的B
  • 板块学术版
  • 楼主xieziheng
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/10 21:52
  • 上次更新2023/10/24 04:49:20
查看原帖
关于刚才比赛的B
401215
xieziheng楼主2023/1/10 21:52

为什么刚才比赛的 B 这么写会超时呀?

#include <bits/stdc++.h>
#define il inline
using namespace std;
il int read(){
	int x=0,c=getchar();
	while(!isdigit(c)) c=getchar();
	while(isdigit(c)) x=x*10+c-48,c=getchar();
	return x;
}
il int cmax(int x,int y){return x>y?x:y;}
const int N=2e5+5;
int T,n,in[N],ck[N],s,mx;
vector<int> e[N];
int x,y;
int main() {
	scanf("%d",&T);
	while(T--){
		n=read();s=mx=0;
		for(int i=1;i<=n;++i) e[i].clear(),ck[i]=0;
		for(int i=1;i<=n;++i){
			x=read();
			for(int j=1;j<=x;++j) y=read(),e[i].push_back(y),mx=cmax(mx,y);
		}
		for(int i=0;i<=mx;++i) in[i]=0;
		for(int i=1;i<=n;++i) for(int j=0;j<e[i].size();++j) x=e[i][j],++in[x];
		for(int i=1;i<=n;++i){
			for(int j=0;j<e[i].size();++j){
				x=e[i][j];
				if(in[x]==1) ck[i]=1;
			}
		}
		for(int i=1;i<=n;++i) s+=ck[i];
		if(s<=n-1) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
2023/1/10 21:52
加载中...