求助dalao
查看原帖
求助dalao
1019257
zhaojiawei1234444楼主2024/6/7 18:04

这个题困扰我一个世纪了

#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int n,m,w;
int c[N],d[N];
int u,v;
int f[N];
int p[N];
int nu,t[N];
int cc[N],dd[N]; 

int find(int x){
	if(p[x]==x) return x;
	return p[x]=find(p[x]);
}
int main(){
	cin>>n>>m>>w;
	for(int i=1;i<=n;i++){
		cin>>c[i]>>d[i];
	}
	for(int i=1;i<=n;i++) p[i]=i;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		c[p[v]]+=c[p[u]];
		d[p[v]]+=d[p[u]];
		p[u]=find(p[v]);
		
	}
	for(int i=1;i<=n;i++) {
		t[p[i]]++;
		
	}
	for(int i=1;i<=n;i++) if(t[i]>=1) nu++;
	int num=1;
	for(int i=1;i<=n;i++){
		if(t[i]!=0) cc[num]=c[t[i]];dd[num]=d[t[i]];
	} 
	for(int i=1;i<=nu;i++){
		cout<<cc[i]<<" ";
	}
	cout<<endl;
	for(int i=1;i<=nu;i++){
		cout<<dd[i]<<" ";
	}
}

悬赏关注

2024/6/7 18:04
加载中...