ccf数据这么弱吗,大样例没过但A了
查看原帖
ccf数据这么弱吗,大样例没过但A了
366639
hh弟中弟楼主2023/12/6 16:38

rt,思路是拆点,然后直接搜,样例4RE,交了一发,但A了,求调。

#include<bits/stdc++.h>
const int N=4e5+10;
int C,T,tot,n,m,ans,de=0;
int del[N];
int now[N];
bool mp[N];
// std::unordered_map<int,bool>mp;
// std::unordered_map<int,int>now;
std::vector<int>v[N];
bool vis[N];
inline int qf(int x){return (x<=n+m)?x+n+m:x-n-m;}
#define add(a,b) v[a].push_back(b)
void dfs(int x){
	// std::cout<<x<<" dfs\n";
	vis[x]=true;
	mp[x]=true;
	del[++de]=x;
	if(x<=n&&mp[qf(x)])ans++;//std::cout<<x<<' '<<qf(x)<<"ans\n",
	if(qf(x)<=n&&mp[qf(x)])ans++;//std::cout<<qf(x)<<' '<<x<<"ans\n",
	for(int i:v[x])if(!vis[i])dfs(i);
}
int main(){
	// freopen("tribool.in","r",stdin);freopen("tribool.out","w",stdout);
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);std::cout.tie(0);
	std::cin>>C>>T;
	while(T--){
		ans=0;
		std::cin>>n>>m;
		for(tot=1;tot<=n;++tot)now[tot]=tot;
		for(int i=1,a,b;i<=m;++i,++tot){
			char ch;std::cin>>ch;
			if(ch=='+'){
				std::cin>>a>>b;
				if(a!=b){
				now[a]=tot;
					a=now[a];b=now[b];
					add(a,b),add(b,a);
					a=qf(a),b=qf(b);
					add(a,b),add(b,a);
				}
				else{
					int zc=now[a];now[a]=tot;a=now[a];
					add(zc,a),add(a,zc);
					add(qf(zc),qf(a)),add(qf(a),qf(zc));
				}
			}
			if(ch=='-'){
				std::cin>>a>>b;
				if(a!=b){
					now[a]=tot;
					a=now[a],b=now[b];
					add(a,qf(b)),add(qf(b),a);
					add(qf(a),b),add(b,qf(a));
				}
				else{
					int zc=now[a];now[a]=tot;a=now[a];
					add(zc,qf(a)),add(qf(a),zc);
					add(qf(zc),a),add(a,qf(zc));
				}
			}
			if(ch=='T'||ch=='F')std::cin>>a,now[a]=tot;
			if(ch=='U'){
				std::cin>>a;now[a]=tot;a=now[a];
				add(a,qf(a)),add(qf(a),a);
			}
		}
		for(int i=1;i<=n;++i)add(i,now[i]),add(qf(i),qf(now[i])),add(now[i],i),add(qf(now[i]),qf(i));//std::cout<<i<<' '<<now[i]<<"bian\n"<<qf(i)<<' '<<qf(now[i])<<"bian\n";
		for(int i=1;i<=n;++i){
			if(!vis[i])dfs(i);
			for(int j=1;j<=de;++j){
				mp[del[j]]=0;
			}de=0;
		}
		std::cout<<ans<<'\n';
		memset(v,0,sizeof(v));memset(vis,0,sizeof(vis));
	}
}
2023/12/6 16:38
加载中...