常见错误
查看原帖
常见错误
331947
hegm楼主2023/2/8 19:28

你的 solve 函数里面可能有这么一段

for(int i=0,x,y;i<(int)v[now].size();i++)
	{
		x=v[now][i].x;y=v[now][i].y;
		x=find(x);y=find(y);
		if(x==y)
		{
			for(int j=l;j<=r;j++)
			cout<<"No\n";
			ans=0;
			break;
		}
		x=v[now][i].x;y=v[now][i].y;//!!!!!!!!!!!!!!!!!!!
		merge(x+n,y);
		merge(x,y+n);
	}

加上注释的那一句一定要加上,因为你按秩合并之后的祖先可能已经是 >n 的了,如果再加上 n,就寄了。

2023/2/8 19:28
加载中...