WA on test 5求调(悬赏3关
查看原帖
WA on test 5求调(悬赏3关
649111
封禁用户楼主2023/4/20 18:56
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,fa1[505][505],fa[505],fa2[505][505],ls[505],ls1[505],mm,rankk[505],c=0,anss[505]; 
void init (ll n){
	for(int i=1;i<=n;i++){
		fa[i]=0;
	}
}
int find(int x) {
	return fa[x] ? fa[x] = find(fa[x]) : x;
}
void merge(int x, int y) {
	x=find(x),y=find(y);
	if(x!=y){
		c++;
		fa[x]=y;
	} 
}
int main(){
	cin>>n>>m;
	init(n);
	for(int i=1;i<=m;i++){
		//c=0;
		cin>>ls[i]>>ls1[i];
		merge(ls[i],ls1[i]);
		anss[i]=c;
		for(int j=1;j<=n;j++){
			fa1[i][j]=fa[j];
		}
	}
	init(n);
	for(int i=m,i1=1;i>=1;i--,i1++){
		merge(ls[i],ls1[i]);
		for(int j=1;j<=n;j++){
			fa2[i][j]=fa[j];
		}
	}
	cin>>mm;
	ll L,R;
	shile(mm--){
		cin>>L>>R;
		c=0;
		init(n);
		for(int j=1;j<=n;j++){
			if(fa2[R+1][j]){
				merge(j,fa2[R+1][j]);
			}
		}
		cout<<n-anss[L-1]-c<<endl;
	}
} 
2023/4/20 18:56
加载中...