社区讨论

解锁成就--满江红--help必关

P1550[USACO08OCT] Watering Hole G参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m679mesa
此快照首次捕获于
2025/01/22 10:08
去年
此快照最后确认于
2025/11/04 11:04
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int N=510;
struct RawEdge{
	int from,to,val;
};
vector<RawEdge> edges;
int fa[N];
bool cmp(RawEdge &a,RawEdge &b){
	return a.val<b.val;
}
int get_fa(int cur){
	if(cur==fa[cur]){
		return cur;
	}
	fa[cur]=get_fa(fa[cur]);
	return fa[cur];
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,i,j;
	cin >> n;
	for(i=0;i<+n;i++){
		fa[i]=i;
	}
	for(i=1;i<=n;i++){
		int w;
		cin >> w;
		edges.push_back((RawEdge){0,i,w});
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			int p;
			cin >> p;
			if(p!=0){
				edges.push_back((RawEdge){i,j,p});
			}
		}
	}
	sort(edges.begin(),edges.end(),cmp);
	int val=0;
	for(i=0;i<edges.size();i++){
		const int u=edges[i].from;
		const int v=edges[i].to;
		if(get_fa(u)==get_fa(v)){
			continue;
		}
		fa[get_fa(u)]=get_fa(v);
		val=val+edges[i].val;
	}
	cout << val;
	return 0;
}
CPU烧了

回复

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

正在加载回复...