社区讨论

88ptsMLE求调

P8250交友问题参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mk2psjn6
此快照首次捕获于
2026/01/06 22:58
2 个月前
此快照最后确认于
2026/01/10 11:50
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=2e5+5;
using ll=long long;
int n,m,q,sum,ans,x,y,t,v[N];
vector<int> g[N];
unordered_map<int,int> mp[N];
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m>>q;
	sum=sqrt(m);
	while(m--) cin>>x>>y,g[x].pb(y),g[y].pb(x);
	for(int i=1;i<=n;i++){
		if(g[i].size()>sum){
			v[i]=i;
			for(int j:g[i]) v[j]=i;
			for(int j=1;j<=n;j++){
				ans=0;
				for(int to:g[j]) if(v[to]==i) ans++;
				mp[i][j]=ans;
			}
		}
	}
	for(int i=1;i<=n;i++) v[i]=0;
	while(q--){
		t++;ans=0;
		cin>>x>>y;
		if(g[x].size()<=sum&&g[y].size()<=sum){
			v[y]=t;
			for(int i:g[y]) v[i]=t;
			for(int i:g[x]) if(v[i]!=t) ans++;
		}else if(g[x].size()>sum) ans=g[x].size()-mp[x][y];
		else ans=g[x].size()-mp[y][x];
		cout<<ans<<'\n';
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...